2015-06-30 77 views
1

我在eclipse中构建了一个Java项目。它在eclipse中运行良好。我之前已经将它作为jar导出,并且工作正常。不过,自从上次出口以来已经有一段时间了。这一次,当我输出并点击jar时,什么都没有发生。从eclipse导出jar不起作用

在命令行中运行它揭示了以下错误:

C:\>java -jar "C:\Users\Quinn\Desktop\think.jar" 
Exception in thread "main" java.lang.IllegalAccessException: Class org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader can not access a member of class think.Main with modifiers "public static" 

这个错误是什么意思?有什么理由可以发生这种情况吗?我一直无法在网上找到任何提及。

非常感谢。

编辑: 当我解压的jar,内容是这样的: enter image description here

清单(在META-INF)看起来是这样的:(是的,它有一个额外的空行)

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ substance-6.1.jar trident.jar 
Class-Path: . 
Rsrc-Main-Class: think.Main 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 
+0

我很困惑,在从命令行运行时,如何涉及eclipse类'org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader'。你有什么想法是怎么回事?另外,您是否可以解压缩您的jar并向我们展示存档的结构? – thatidiotguy

+0

Eclipse JDK和系统jdk不同,我猜这里。请检查 – Bhupi

+0

老实说,我也对此感到困惑。我从未指定明确使用org.eclipse中的任何内容。我现在正在开箱拆箱,并且很快就会有这个功能 – B1CL0PS

回答

1

当您使用Export> Runnable JAR文件时,JarRsrcLoader包含在Jar中。它处理jar中的嵌套jar文件。

JarRsrcLoader试图找到自己的think.Mainmain方法,但不能找到一个名为main方法是public static

0

嗯,这很尴尬。事实证明,虽然我的主要方法是public static,但包含的类不是公开的。现在一切都已修好:)