JavaFX和用Ant编译HelloWorld
我将在上跟随教程,并在编译代码后尝试运行jar文件输出时收到此错误消息JavaFX和用Ant编译HelloWorld,ant,javafx,Ant,Javafx,我将在上跟随教程,并在编译代码后尝试运行jar文件输出时收到此错误消息 Error: Could not find or load main class HelloWorld 为了建立一个java开发环境,我去了oracle,下载了他们的代码,并将其放到/usr/lib/jvm/jdk1.8.045中,然后在build.xml文件中指向它,如图所示 在接下来的教程中,我有一个包含以下代码/脚本的项目文件夹: (示例/src/HelloWorld.java) 少了什么 消息“无法找到或加载主类H
Error: Could not find or load main class HelloWorld
为了建立一个java开发环境,我去了oracle,下载了他们的代码,并将其放到/usr/lib/jvm/jdk1.8.045
中,然后在build.xml文件中指向它,如图所示
在接下来的教程中,我有一个包含以下代码/脚本的项目文件夹:
(示例/src/HelloWorld.java)
少了什么 消息“无法找到或加载主类HelloWorld”表示Java无法在其类路径中找到HelloWorld
类。我怀疑这可能是由于清单文件中的类路径
条目为空:
Class-Path:
您可能希望通过在Ant构建文件中添加以下内容(类似于中的示例),尝试重写此项以将类路径设置为Jar的根目录:
我的Javafx应用程序有一个可用的ant构建(它是2.2,但可能适合您),该应用程序在win和linux上进行了测试。
这些是关键区别:
<path id="fxant">
<filelist>
<file name="${java.home}\..\lib\ant-javafx.jar"/>
<file name="${java.home}\lib\jfxrt.jar"/>
</filelist>
</path>
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
uri="javafx:com.sun.javafx.tools.ant"
classpathref="fxant"/>
这些是自动添加的,我没有主类和类路径。我只是尝试了一下。在Win7上工作没有问题。您能将示例文件夹的全部内容压缩并放到web上吗?谢谢您的帮助。您能在您的系统上运行
echo%CLASSPATH%
并共享输出吗?我的类路径没有设置,这可能意味着我需要在build.xml中设置它(或者尝试使用变量来查看它是否有帮助)。整个代码项目在这里都是可用的,这对我来说在Win7上工作没有问题。我没有设置类路径。你能试着用java-cp运行这个文件吗-jar HelloWorld.jar?好的,伙计,我同意你的看法。。。您的环境一定有问题,因为清单文件中的所有行都是自动添加的,所以我在创建jar时没有添加任何清单记录。(+我使用了1.7xJDK的罐子)感谢您的回复!我想您已经了解了一些情况,但是.JAR输出的清单对我来说仍然是空白的=(
$ java -jar HelloWorld.jar
Error: Could not find or load main class HelloWorld
$ jar tvf HelloWorld.jar
0 Mon Apr 27 00:57:58 CDT 2015 META-INF/
113 Mon Apr 27 00:57:58 CDT 2015 META-INF/MANIFEST.MF
1014 Mon Apr 27 00:57:58 CDT 2015 HelloWorld$1.class
1436 Mon Apr 27 00:57:58 CDT 2015 HelloWorld.class
(HwlloWorld.jar META-INF/MANIFEST.MF)
Manifest-Version: 1.0
JavaFX-Version: 8.0
Class-Path:
Created-By: JavaFX Packager
Main-Class: HelloWorld
Class-Path:
<fx:jar destfile="${build.dist.dir}/HelloWorld.jar">
<fx:application refid="HelloWorldID"/>
<fx:resources refid="appRes"/>
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="."/>
</manifest>
</fx:jar>
<path id="fxant">
<filelist>
<file name="${java.home}\..\lib\ant-javafx.jar"/>
<file name="${java.home}\lib\jfxrt.jar"/>
</filelist>
</path>
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
uri="javafx:com.sun.javafx.tools.ant"
classpathref="fxant"/>
JavaFX-Application-Class: packagename.MainClass
JavaFX-Class-Path: packagename/MainClass.class