繁体   English   中英

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

[英]Problem with classpath involving imports from a jar file

我遇到了与此处提到的相同的问题: 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 的作者页面复制的。 这是一个在 Windows 终端上进行彩色打印的库。 我需要做什么才能运行这个 class? 非常感谢您的帮助。


[UDPATE:解决方案]

有人建议我为我尝试测试的应用程序创建一个 jar,然后运行该 jar。 因此,我创建了 jar “jprinter”,其中包含我的所有文件(不是我使用的外部 jar)和测试 class。 之后我可以在任何文件夹中执行

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

其中lib是我和其他 jars 使用的文件夹; print.test是 class Test的 package 包含主要方法。


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

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

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

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

或更好的类路径

[UDPATE:解决方案]

有人建议我为我尝试测试的应用程序创建一个 jar,然后运行该 jar。 因此,我创建了 jar “jprinter”,其中包含我的所有文件(不是我使用的外部 jar)和测试 class。 之后我可以在任何文件夹中执行

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

其中lib是我和其他 jars 使用的文件夹; print.test是 class Test的 package 包含主要方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM