2011-06-09 42 views
2

这里提到我有同样的问题classpath中涉及进口:exception-in-thread-main-java-lang-noclassdeffounderror-wrong-name问题从一个jar文件

我与日食执行没有问题,但与终端我有一个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包“jprinter”,它包含我所有的文件(不是我使用的外部jar)和测试类的主文件。从那以后,我可以在任何文件夹中执行

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

其中lib是我等用坛子的文件夹; print.test是包含主要方法的类Test的包。


[过时:] 我试图通过运行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) 

回答

0

[UDPATE:SOLUTION]

有人劝我创造,我想测试,然后运行该JAR的应用程序的罐子。所以我创建了jar包“jprinter”,它包含我所有的文件(不是我使用的外部jar)和测试类的主文件。从那以后,我可以在任何文件夹中执行

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

其中lib是我等用坛子的文件夹; print.test是包含主要方法的类Test的包。

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 
+2

是的,你可以做到这一点。请注意,不应该使用<>,它只是强调您应该将其替换为实际jar文件的路径。我想这应该是这样的:'java -cp ../lib/jansi.jar temp.Test' – wjans 2011-06-09 11:44:32

+0

如果你有两个jar,一个在lib中,一个在bin中,调用{{java -cp。 。\ lib \ jansi.jar -jar yourjar.jar}}从bin中运行。虽然被wjans舀了过去。 :) – 2011-06-09 11:45:51

+0

@ wjans:是的,我知道<>:P @Urs:Thx为两个罐子的尖端!我忘了'..' – dialex 2011-06-09 12:41:58

1

您必须指定-classpath其中找到“org.fusesource.jansi.Ansi”。见详细classpath

或更好classpath