在Google上进行了艰苦的战斗后,我找到了一种下载和设置Apache Commons API for Java的方法(所有这些只是为了让我能够包装一大块文本:P)。在正确创建我的CLASSPATH之后,我的编译器(mingw for command-line)能够访问库并编译我的文件。但是,当我运行它时,我得到一个运行时错误:
Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundError: org/apach
e/commons/lang3/text/WordUtils
我忘了在某个地方声明Apache类吗?
带有问题的代码片段:
String strWrap = WordUtils.wrap("A really really really really really long sentence.", 50);
b.drawString(strWrap,20,20);
我的导入声明:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import org.apache.commons.lang3.text.*;
顺便提一下,我应该提到CLASSPATH被设置为一个环境变量,来自Apache的.jar
文件不是项目的其余部分,我把它放在一个单独的目录中,因为我打算使用它适用于多个项目。
答案 0 :(得分:2)
正确检查CLASS PATH
如果从command line
运行java类,则需要添加(当前目录)点(。)。
java YourClass -cp .
更新:如果您使用的是Applet,请参阅applet Ref
Applet类是从applet的CODEBASE加载的 如果没有CODEBASE标记,则为HTML文件的目录,而不是来自 CLASSPATH。如果你在一个目录中有applet类 你的CLASSPATH,这些类将被允许绕过正常 applet安全限制。
见Environment Reference,
appletviewer
详细说明:(Reference)
有些浏览器可以运行Java applet。他们通过在浏览器中内置完整的Java解释器或作为浏览器扩展(或插件)加载来实现这一点。 请注意,浏览器使用的Java解释器可能会也可能不会尊重CLASSPATH环境变量的设置,具体取决于您使用的浏览器。这可能会影响下载applet时发生的情况。
Java applet使用标记嵌入在HTML页面中,如:
<applet code="main.class" height="100" width="100"></applet>
当浏览器看到此标记时,它会执行以下操作:
main.class
并确保它扩展java.applet.Applet
(它本身扩展了java.awt.Panel)。下载是使用简单的GET请求完成的,就像下载图像一样。init()
方法,然后调用show()
方法。