找不到或加载主类 - 我无法运行从 Ant 创建的.jar文件



我已经为此苦苦挣扎了两天了。我创建了一个非常简单的 HelloWorld 类来测试我是否可以让它工作,但我无法做到。我收到错误 - 找不到或加载主类...它从 Eclipse 工作或从脚本运行任务。但是双击.jar或从CMD运行它会给我错误。此错误的可能原因是什么?类路径?环境变量?目录结构?请帮忙!

package com.hellojava;
public class HelloWorld {
 public static void main(String[] args)
 {
    System.out.println("Hello World!");
 }
}

我的构建.xml

<project name="TestProject" basedir="." default="main">
<property name="src.dir"     value="src"/>
<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir"     value="${build.dir}/jar"/>
<property name="main-class"  value="com.hellojava.HelloWorld"/>
<target name="clean">
    <delete dir="${build.dir}"/>
</target>
<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>
<target name="run" depends="jar">
    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
</target>
<target name="clean-build" depends="clean,jar"/>
<target name="main" depends="clean,run"/>

run:
 [java] Hello World!
main:
BUILD SUCCESSFUL
Total time: 5 seconds
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.7.0_11-b21 (Oracle Corporation)
Main-Class: com.hellojava.HelloWorld

**编辑:java -jar TestProject.jar 有效,但 javaw -jar TestProject.jar 不起作用。但是,我解决了问题 - 请参阅我发布的答案。

运行 jar 文件的常用语法是 java -jar TestPractice.jar。如果此操作失败,则需要进行一些分析。

  1. 使用 WinZip 打开 jar 文件,然后解压缩到临时目录。
  2. 检查 HelloWorld.class 文件是否存在,并且位于正确的目录中。
  3. 检查是否存在元 INF/清单。MF文件,它包含一个读行主类:com.hellojava.HelloWorld我在您的 Ant 脚本中看不到任何可以生成此文件的内容。

如果一切正常,您的程序将运行。

有关更多信息,请查看如何使用 Ant 创建捆绑的可运行罐

问题解决了!

不得不将注册表更改为我正在使用的正确 Java 版本。它被设置为我的 comp 中的 Java 的先前版本。

我可以通过cmd运行.jar文件,但不能双击它们

另外,我注意到javaw -jar文件.jar对我不起作用,而java -jar文件.jar工作。我更改了通过"打开方式"打开.jar文件的程序,并选择了java而不是javaw。这现在解决了问题 - 不过我还有一个问题。我想知道为什么javaw不起作用,但现在我很高兴它正在工作:)

我遇到了同样的问题。应用程序在我的 PC 上运行良好,但在某些 PC 上我收到相同的错误。尝试在您的应用程序无法正常工作的计算机上更新 Java 运行时。例如,我使用 JRE7 并在应用程序无法正常工作的 PC 上安装了 Java 1.6。

相关内容

  • 没有找到相关文章

最新更新