我已经为此苦苦挣扎了两天了。我创建了一个非常简单的 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。如果此操作失败,则需要进行一些分析。
- 使用 WinZip 打开 jar 文件,然后解压缩到临时目录。
- 检查 HelloWorld.class 文件是否存在,并且位于正确的目录中。
- 检查是否存在元 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。