为什么在运行时没有找到di commons类?

时间:2012-09-26 18:02:33

标签: java apache runtime-error apache-commons

在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文件不是项目的其余部分,我把它放在一个单独的目录中,因为我打算使用它适用于多个项目。

1 个答案:

答案 0 :(得分:2)

正确检查CLASS PATH 如果从command line运行java类,则需要添加(当前目录)点(。)。

java YourClass -cp .

更新:如果您使用的是Applet,请参阅applet Ref

  

Applet类是从applet的CODEBASE加载的   如果没有CODEBASE标记,则为HTML文件的目录,而不是来自   CLASSPATH。如果你在一个目录中有applet类   你的CLASSPATH,这些类将被允许绕过正常   applet安全限制。

Environment Referenceappletviewer

详细说明:Reference
有些浏览器可以运行Java applet。他们通过在浏览器中内置完整的Java解释器或作为浏览器扩展(或插件)加载来实现这一点。 请注意,浏览器使用的Java解释器可能会也可能不会尊重CLASSPATH环境变量的设置,具体取决于您使用的浏览器。这可能会影响下载applet时发生的情况。

Java applet使用标记嵌入在HTML页面中,如:

<applet code="main.class" height="100" width="100"></applet>

当浏览器看到此标记时,它会执行以下操作:

  1. 如果Java解释器尚未运行,则启动它。
  2. 在页面上保留给定的空间量(100x100)并在该空间中创建Java容器。
  3. 下载文件main.class并确保它扩展java.applet.Applet(它本身扩展了java.awt.Panel)。下载是使用简单的GET请求完成的,就像下载图像一样。
  4. 将applet添加为容器的子项。
  5. 在小程序上调用init()方法,然后调用show()方法。