2010-11-07 72 views
1

我已经下载了一个xSocket.jar,它将用作classpath并编译myprogram.jar,两者都在Java文件夹中。 在Manifest中添加类路径能够找到xSocket.jar,而无需在命令行中定义-cp清单中的类路径

在我的命令行D:\>的位置,我在myprogram.jar试图运行java -jar java\myprogram.jar -n 0

Exception in thread "main" java.lang.NoClassDefFoundError: org/xsocket/connectio 
n/IBlockingConnection 
     at myprogram.main(myprogram.java:114) 
Caused by: java.lang.ClassNotFoundException: org.xsocket.connection.IBlockingCon 
nection 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
     ... 1 more 

我的清单:

Manifest-Version: 1.0 
Created-By: 1.6.0_22 (Sun Microsystems Inc.) 
Main-Class: myprogram 
Class-Path: xSocket 

回答

2

您需要使用扩展指定完整的jar文件名即。请查询here了解更多信息。

Class-Path: xSocket.jar 
+0

是的,它的工作!难怪,我花了2天时间让我的Flash应用程序NativeProcess工作,因为它有一个无法正确使用-cp执行Jar的bug。但我可以在绝对路径中声明classpath吗?如“D:\ java \ xSocket.jar”没有双引号? – Proyb2 2010-11-07 07:03:26

1

是增加在清单能够 类路径找到xSocket.jar无需 定义在命令行一个-cp?

是的,就是这样。

你应该在你的myprogram.jar类传球值更改为

Class-Path: relatedPath/xSocket.jar

+0

嗯,如果两个jar都在同一个文件夹中,意思是我还必须添加relatedPath?为什么? – Proyb2 2010-11-07 06:59:23

+1

@ user217582:如果两个罐子都在同一个文件夹中,那么相对路径是一个空字符串(当然不需要斜线)。顺便说一句,不同的罐子被空间隔开。 – Roman 2010-11-07 07:08:06

+0

太棒了,我还有一个问题,如果我必须声明2个或多个不同文件夹的类路径,该怎么办?以及我如何声明多个jar?使用*“一个双引号的星号?对不起,由于我忙于大量的Actionscript项目,所以在阅读Java时有点懒。 – Proyb2 2010-11-07 07:12:19

相关问题