2016-04-04 58 views
1

我一直在试图运行从jar文件的工具软件,但它一直打印出来:Jar文件无法加载或找到主类

“无法找到或加载主类...”。

我试图解决这个问题,使用这个thread的信息,但似乎都是无用的。说实话,因为这是一个微不足道的问题,我越来越绝望。

不管怎么说,我所做的:

Main-Class: com.test.Test 

我的清单属性:

jar cfm test.jar manifest.txt <full_path>/out/com/test/*.class 

这是什么打包成jar文件(该文件的Test.class)

测试等级:

package com.test; 

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello World"); 
    } 
} 
+3

你是如何试图调用它的? – KevinO

+3

它看起来并没有正确打包你的jar(你不保留文件夹结构)。我想你想'jar cfm test.jar manifest.txt /out /' –

+0

然后用'java -jar'或'java -cp'运行它吗? – fukanchik

回答

1

您应该正确包装类。做

jar cfm test.jar manifest.txt com/test/*.class 

在文件夹的父文件夹中com。通过提供绝对路径(您所做的方式),类文件打包错误。

+0

或者使用'-C'作为http://stackoverflow.com/a/18972208/2868801。另外,当你只需要清单中的Main-class,你就可以使用'-e'和classname来代替'-m'和清单文件。 –

+0

@ dave_thompson_085这是一个很好的建议,但OP的问题是该类没有正确打包。简单地改变班级的路径(到相对的班级)就足够了,其他一切都保持不变。 –

+0

改变完整的相对路径没有工作Kedar和@ThierryB – Wecherowski

1

首先,为了防止使用Eclipse IDE,可以使用一些工具,如Fat Jar Plugin,它们可以帮助您打包构建。其次,有Maven来处理你的依赖关系,并且用一切正常的方式构建你需要的包。在你的情况下,我会寻找Apache Maven Jar Plugin

最后,旧学校的方式与命令行一样,你试图去做。 正如Eliott Frisch在您的问题评论中所说的,您无需为您的jar cfm test.jar manifest.txt <full_path>/out/中的主类提供完整路径。 而这是因为manifest.txt已经提供了包信息!

相关问题