我试图通过运行我的 javaprojekt
java -jar myproject.jar
并得到:
Failed to load Main-Class manifest attribute from myproject.jar
怎么会这样?我的罐子开箱即用,使用 Netbeans
好的,我发现了一些看起来像是清单文件的东西,所以它是:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: someone
Build-Jdk: 1.7.0_25
好的,这是课程:
public class Starter {
private static Control c;
/**
*
* @param
*/
public static void main(String [ ] args) {
Control c = new Control();
}
public static Control getC() {
return c;
}
}
但是,即使忽略罐子,如果我尝试
java -cp myproject.jar control.Starter
我得到一个 classNotFoundException
但是,当我从 Netbeans 内部开始时,它确实可以正常工作。
好的,显然,当我第一次创建项目时,我得到了一个带有 main 的默认类。我现在才删除了那个类并再次清理和构建。
这意味着我的清单现在看起来像:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: someone
Build-Jdk: 1.7.0_25
Main-Class: default.Starter
一方面,我想知道这是怎么发生的,因为 Starter 显然是在包控制中,而不是在包默认中。
另一方面,我仍然得到:
Failed to load Main-Class manifest attribute from myproject.jar
有人能帮我吗?
好吧,如果我尝试使用 java -cp 等进行编译,我会得到一个异常:
Exception in thread "main" java.lang.UnsupportedClassVersionError: control/Starter : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: control.Starter. Program will exit.
有人可以回答我吗,请:
这通常是项目中的错误还是其他地方的错误?意思是,如果我尝试在另一台计算机上使用所谓的正确路径构建相同的项目,我会有更好的成功机会吗?是否有可能我设法编写了不可能成为可执行 jar 的代码?