涉及从jar文件导入的类路径问题

时间:2011-06-09 11:34:10

标签: java classpath

我遇到了与此处提到的问题相同的问题:exception-in-thread-main-java-lang-noclassdeffounderror-wrong-name

我使用eclipse执行没有问题但是终端我得到了NoClassDef。上升一个文件夹并执行java <package-name>.<class-name>效果很好。

我的简单代码如下:

package temp;

import org.fusesource.jansi.Ansi;

public class Test {

    public static void main(String[] args) {

        System.out.println("I'm going to blow on the next line!");
        System.out.println( Ansi.ansi().eraseScreen().render("@|bold,red Hello|@ @|green World|@") );

    }

}

我知道这段代码会运行,因为我是从Jansi's author page复制的。它是一个在Windows终端上打印彩色的库。 运行此课程需要做什么?非常感谢帮助。


[UDPATE:SOLUTION]

我被建议创建一个我试图测试的应用程序的jar然后运行该jar。所以我创建了包含我所有文件(不是我正在使用的外部jar)的jar“jprinter”和包含main的测试类。之后我可以在任何文件夹中执行

java -cp ".\lib\jprinter-1.15.jar;.\lib\*" print.test.Test

其中lib是我和其他罐子使用的文件夹; print.test是类Test的包,其中包含main方法。


[过时:] 我尝试通过运行java .:..\lib\jansi-1.4.jar temp.Test来执行,它给了我以下输出:

I'm going to blow on the next line!
Exception in thread "main" java.lang.NoClassDefFoundError: org/fusesource/jansi/Ansi
        at temp.Test.main(Test.java:13)

我还尝试通过运行java ".:..\lib\jansi-1.4.jar" temp.Testjava ".;..\lib\jansi-1.4.jar" temp.Test来执行,这给了我以下输出:

Exception in thread "main" java.lang.NoClassDefFoundError: \lib\jansi-1.4\jar
Caused by: java.lang.ClassNotFoundException: .:..\lib\jansi-1.4.jar
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

3 个答案:

答案 0 :(得分:4)

您应该将此库添加到类路径中。尝试像这样运行它:

java -cp .:<path_to_your_jansi_jar> temp.Test

请注意,分隔符取决于平台。在Unix系统上应该使用“:”,在Windows系统上它将是“;”:

java -cp .;<path_to_your_jansi_jar> temp.Test

在您的特定情况下,它可能是这样的:

java -cp .;..\lib\jansi-1.4.jar temp.Test

答案 1 :(得分:1)

您必须指定-classpath,其中找到“org.fusesource.jansi.Ansi”。有关详细信息,请参阅classpath

或更好classpath

答案 2 :(得分:0)

[UDPATE:SOLUTION]

我被建议创建一个我试图测试的应用程序的jar然后运行该jar。所以我创建了包含我所有文件(不是我正在使用的外部jar)的jar“jprinter”和包含main的测试类。之后我可以在任何文件夹中执行

java -cp ".\lib\jprinter-1.15.jar;.\lib\*" print.test.Test

其中lib是我和其他罐子使用的文件夹; print.test是类Test的包,其中包含main方法。