解决问题的小可爱

Linux运行java的jar文件提示找不到main函数若干解决方法

写好的java project放到树莓派上运行出现了错误,显示no main manifest attribute或者显示没有找到main的入口。这里把一些步骤和解决方法做一定的整理。

  1. 写好的JAVA工程,导出成.jar形式
  2. 放在linux的指定的文件夹中
  3. 通过运行 java -jar app.jar 得以运行

遇到的问题:报错:”no main manifest attribute”,or “Could not find or load main class ”

整理的解决方案:

  1. java -cp name.jar mainclassname 输入指令
  2. 在export成为jar文件的时候,先不要急着finish,一直点next,有一处是可以填写main入口的
    无标题
  3. 在export的时候,有一个选项是导出成可运行的jar文件,姐姐我就是这么简单粗暴的解决的….
    无标题2
  4. 还有原因是Java从MANIFEST.MF找不到main函数的入口,解决的方案是,找到META-INF/MANIFEST.MF这个文件,一般第一行是版本号,你在最后一行加上:Main-Class: com.mypackage.MyClass,其中,com.mypackage.MyClass就是包含着你main函数的类。
  5. 对于CLI,Maven或者是Ant也有各自的解决方法

    • CLI:用这条指令:jar cmvf META-INF/MANIFEST.MF <new-jar-filename>.jar
    • Maven:在pom.xml加上

      <build>
            <plugins>
              <plugin>
                <!-- Build an executable JAR -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                  <archive>
                    <manifest>
                      <addClasspath>true</addClasspath>
                      <classpathPrefix>lib/</classpathPrefix>
                      <mainClass>com.mypackage.MyClass</mainClass>
                    </manifest>
                  </archive>
                </configuration>
              </plugin>
            </plugins>
          </build>
    • Ant:加上

      <jar destfile="build/main/checksites.jar">
        <fileset dir="build/main/classes"/>
        <zipfileset includes="**/*.class" src="lib/main/some.jar"/>
        <manifest>
          <attribute name="Main-Class" value="com.acme.checksites.Main"/>
        </manifest>
      </jar>

希望大家早日解决问题啦

Reference:

  • http://stackoverflow.com/questions/9689793/cant-execute-jar-file-no-main-manifest-attribute
  • http://stackoverflow.com/questions/19250966/failing-to-run-jar-file-form-command-line-no-main-manifest-attribute

 

Be the First to comment.

Leave a Comment

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据