2012-09-26 54 views
1

在Google上艰苦的战斗之后,我能够找到一种方法来下载和设置Java的Apache Commons API(所有这一切只是为了包装一大块文字:P)。在正确创建我的CLASSPATH之后,我的编译器(命令行mingw)能够访问库并编译我的文件。但是,当我运行它时,我得到一个运行时错误:Java在运行时没有找到Apache公共类

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语句(S):

import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.net.*; 
import org.apache.commons.lang3.text.*; 

通过我应该提到的是CLASSPATH设置为一个环境变量的方式, Apache的.jar文件不在项目的其余部分,我把它放在一个单独的目录中,因为我打算将它用于多个项目。

+1

当您不仅在编译时运行时,还需要指定CLASSPATH。你可以用什么命令来运行应用程序? –

+0

(这是一个小程序)“appletviewer wrap.html” 顺便说一句,我没有在编译期间指定CLASSPATH,我创建了一个环境变量.... – Nigh7Sh4de

+1

好的。比你的任务更难。我看到两种方法:你可以将所有的apache commons的类包含到jar中,并创建一个大的jar或研究如何在applet中指定classpath。 –

回答

2

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

java YourClass -cp . 

更新:如果您使用的小程序见本applet Ref

Applet classes are meant to be loaded from the applet's CODEBASE (the directory of the HTML file if no CODEBASE tag is present), not from the CLASSPATH. If you have applet classes in a directory which is in your CLASSPATH, those classes will be allowed to bypass the normal applet security restrictions.

看到这个Environment Referenceappletviewer

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

Java小应用程序是使用标签嵌入到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. 将小程序添加为容器的子项。
  5. 调用小程序上的init()方法,然后调用show()方法。
+0

这是一个小程序,所以我使用appletviewer不支持“-cp”参数 – Nigh7Sh4de

+0

好吧,所以我找到了在运行时添加CLASSPATH的方法(“-J-classpath -J ”)。不过,我只是想知道,为什么不能appletviewer看到我的环境变量?类路径在那里设置。 – Nigh7Sh4de

相关问题