Java jar-won';不可处决

Java jar-won';不可处决,java,jar,Java,Jar,我试图通过 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: s

我试图通过

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.
有人能回答我这个问题吗

这通常是项目中的bug还是其他地方的bug? 也就是说,如果我尝试在另一台计算机上以假定的正确路径构建同一个项目,我会有更好的成功机会吗?
有没有可能是我写的代码不可能成为可执行的jar?

您需要在清单文件中指定主类

Main-Class: <package>.Starter
Main类:.Starter
或者,您可以通过使用

java -cp myproject.jar <package>.Starter
java-cp myproject.jar.Starter

在这两种情况下,主类都必须是完全限定的,即

您需要在清单文件中指定主类

Main-Class: <package>.Starter
Main类:.Starter
或者,您可以通过使用

java -cp myproject.jar <package>.Starter
java-cp myproject.jar.Starter

在这两种情况下,主类都必须完全合格,即

您不指定
主类
参数

java-jar
试图执行一个jar时,它无法确定哪个方法包含
main
方法。多个类可能包含它,因此无法区分。要解决此问题,必须在清单中指定
Main Class
参数


添加一个:
Main类:Starter
将修复它

您没有指定
主类
参数

java-jar
试图执行一个jar时,它无法确定哪个方法包含
main
方法。多个类可能包含它,因此无法区分。要解决此问题,必须在清单中指定
Main Class
参数



添加一个:
Main类:Starter
将修复它

提供清单文件和启动类文件包,我们可以告诉您它是否设置正确。另外,在构建jar之前,确保清单文件的末尾有一个空行。什么是清单文件?实际上,我认为IDE是为了确保人们不必考虑这些事情。我认为清单文件就在那里。什么是引导类?哦,是的,这里有一个空行。boot类是包含
publicstaticvoidmain(String[])
方法的类。@newnewbie您需要明确地告诉IDE生成一个可执行的JAR文件。(请参阅:)提供清单文件和启动类文件包,我们可以告诉您它是否设置正确。另外,在构建jar之前,确保清单文件的末尾有一个空行。什么是清单文件?实际上,我认为IDE是为了确保人们不必考虑这些事情。我认为清单文件就在那里。什么是引导类?哦,是的,这里有一个空行。boot类是包含
publicstaticvoidmain(String[])
方法的类。@newnewbie您需要明确地告诉IDE生成一个可执行的JAR文件。(请参阅:)听起来很胆小,但显然我无法写入清单文件…我如何更改它?您应该能够。尝试创建您自己的清单文件,一个简单的文本编辑器可以做到这一点,或者通过更改netbeans中清单文件的属性来实现。Netbeans告诉我它是只读的,因为它在JAR中。我可以编写一个新的manifest.mf,但Netbeans不会将它与旧的manifest.mf放在同一个文件夹中。我不能覆盖旧的,也不能更改它的属性,也不能删除它。可以修复吗?您可以在IDE本身中更改jar创建设置。我个人不使用netbeans,因此我对如何使用netbeans知之甚少。听起来不错,但显然我无法写入清单文件……我如何更改它?您应该能够。尝试创建您自己的清单文件,一个简单的文本编辑器可以做到这一点,或者通过更改netbeans中清单文件的属性来实现。Netbeans告诉我它是只读的,因为它在JAR中。我可以编写一个新的manifest.mf,但Netbeans不会将它与旧的manifest.mf放在同一个文件夹中。我不能覆盖旧的,也不能更改它的属性,也不能删除它。可以修复吗?您可以在IDE本身中更改jar创建设置。我个人不使用netbeans,因此我对如何使用netbeans知之甚少。