Java 无法加载类路径上的jar文件

Java 无法加载类路径上的jar文件,java,ant,jar,cmd,executable-jar,Java,Ant,Jar,Cmd,Executable Jar,我试图通过执行java-jarmyjarfile.jararg1来运行我的jar文件,但是它抛出了ClassNotFoundException。仅供参考,这些类文件存在于一些外部jar中,我通过设置指向所有外部jar所在目录的envclasspath变量,将它们放置在我的类路径上。我的MANIFEST.MF看起来像 清单版本:1.0 Ant版本:ApacheAnt 1.7.1 创建人:20.14-b01(太阳微系统公司) 主类:com.abc.test.FileGenerator 建造日期:20

我试图通过执行java-jarmyjarfile.jararg1来运行我的jar文件,但是它抛出了
ClassNotFoundException。仅供参考,这些类文件存在于一些外部jar中,我通过设置指向所有外部jar所在目录的env
classpath
变量,将它们放置在我的类路径上。我的MANIFEST.MF看起来像

清单版本:1.0
Ant版本:ApacheAnt 1.7.1
创建人:20.14-b01(太阳微系统公司)
主类:com.abc.test.FileGenerator
建造日期:2014年10月1日12:52:36
类路径:C:\libraries\commons-beanutils-1.8.3.jar C:\libraries\commons-collections.jar
C:\libraries\commons-discovery-0.2.jar C:\libraries\commons-lang-2.5.jar
C:\libraries\commons-logging-1.1.1.jar C:\libraries\commons-logging-1.0.4.jar

我的主类可以在我的jar中使用,我运行的jar是由类似distfolder的ant脚本创建的。我甚至把绝对路径改成了相对路径。。它仍然抛出相同的错误。这是我的jar结构-

myFile.jar
|-com
||
|abc
||
|测试
||-包装1
||-包装2
||-FileGenerator.class
|
|-META-INF
||-MANIFEST.MF

请在这方面帮助我。
提前谢谢

您需要在类路径中设置所有jar文件的路径,仅放置一个目录将导致jvm查找包从该目录开始的
.class
文件,而不是
.jar
文件

因此,设置类路径如下(windows):

等等

然后,您必须按如下方式运行程序:

java your.main.Klass arg1
或者,您可以在清单中添加
Calss路径
条目,并将所有依赖项放在其中:

Class-Path: libs/somelib1.jar libs/somelib3.jar
然后可以使用
-jar
选项运行它

java -jar myJarFile.jar arg1

使用-jar告诉JVM忽略任何其他类路径设置(包括类路径和-cp)。此时,您必须在清单文件中提供一个类路径。

请在清单文件中添加外部jar的类路径,如

Class-Path: abc.jar def.jar folder/ghi.jar

然后运行命令java-jar myJarFile.jar arg1

问题在于类路径中设置的外部jar路径,请交叉检查。我已经将它们放在名为libraries的目录中,并将类路径设置为classpath=C:\libraries我尝试过了!但是现在我得到了我的主类本身的ClassNotFoundException!!:(.My MANIFEST.MF看起来像
清单版本:1.0 Ant版本:Apache Ant 1.7.1创建人:20.14-b01(Sun Microsystems Inc.)主类:com.abc.test.FileGenerator构建日期:01/10/2014 12:52:36类路径:C:\libraries\commons-beanutils-1.8.3.jar C:\libraries\commons-collections.jar C:\libraries\commons-discovery-0.2.jar C:\libraries\commons-lang-2.5.jar C:\libraries\commons-logging-1.1.1.1.1.1.jar.jar C:\libraries\commons-loggins\commons-logging-1.0.4.jar请确认主类的名称没有输入错误。另外,请确保主类在您创建的jar文件中可用。最后,请避免对依赖项使用绝对路径,将文件夹
libraries
放在jar附近,并使用清单中的相对路径:
类路径:libraries\commons beanutils-1.8.3.jar libraries\commons-collections.jar…
。从jar所在的目录运行该命令。是的,主类在我的jar中可用,我正在运行由ant脚本(如dist文件夹)创建的jar。我甚至将绝对路径更改为相对路径。它仍然抛出相同的错误。下面是我的示例jar structuer-
myFile.jar |-com | | | | | abc | | | | | test | | package1 | | | package2 | | | |-MainClass.class | | | | META-INF MANIFEST.MF
@netuser请编辑您的问题并将这些信息以正确的格式发布在其中,同时发布您的目录树并指出您启动程序的位置。我尝试过了我的主类本身的lassNotFoundException!!:(.my MANIFEST.MF看起来像
清单版本:1.0 Ant版本:Apache Ant 1.7.1创建人:20.14-b01(Sun Microsystems Inc.)主类:com.abc.test.FileGenerator构建日期:01/10/2014 12:52:36类路径:C:\libraries\commons-beanutils-1.8.3.jar C:\libraries\commons-collections.jar C:\libraries\commons-discovery-0.2.jar C:\libraries\commons-lang-2.5.jar C:\libraries\commons-logging-1.1.1.1.1.1.jar.jar C:\libraries\commons-loggins\commons-logging-1.0.4.jar
@net用户,我e从主类所在的文件夹或包文件夹的父目录运行此命令,请在清单中提供类路径中的相对路径:标记file@net用户如果我的解决方案适合您,请右键单击我的答案,这样对其他人会有帮助我的朋友我正在运行我的jar所在的目录在清单文件中,我给出了绝对路径,如C:\libraries\jar1.jar C:\libraries\jar2.jar。但它仍然不起作用。:(我的朋友,请尝试在清单文件的类路径中使用相对路径,如../libraries/jar2.jar
Class-Path: abc.jar def.jar folder/ghi.jar