可执行Jar:无法加载主文件(但主文件位于ANT xml中)

时间:2019-01-09 05:06:11

标签: java eclipse jar executable-jar

当我通过终端运行jar文件时,我没有任何问题。但是,当我将其放在客户端计算机上时,它给了我以下错误(当我通过终端尝试时:

Error: could not find or load main class base.Main.

Caused by: NoClassDefFoundErrors javafx/application/Application

通常,我认为不包含Main。但是,我也导出了ANT XML(包括在下面)和base.Main,这是我的main所在的位置。我也很困惑,因为我可以通过机器上的终端运行可执行jar,而没有任何问题。

我正在使用STS中的export runnable jar功能。我尝试过多次导出。我尝试过更改导出设置(通过选项循环)。我已验证我的客户端具有有效的JDK,即使我怀疑这是问题所在。

*我花了两个小时来寻找答案。虽然我肯定还有类似的问题,但我还没有找到与我所遇到的问题完全匹配的问题。如果您看到了可以随意发布的内容。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for 
Project BLIS with Jar-in-Jar Loader">
<!--this file was created by Eclipse Runnable JAR file Export 
Wizard-->
<!--ANT 1.7 is required-->
<!--define folder properties-->
<property name="dir.buildfile" value="."/>
<property name="dir.workspace" value="${dir.buildfile}"/>
<property name="dir.jarfile" value="/Users/me/Documents"/>
<target name="create_run_jar">
    <jar destfile="${dir.jarfile}/BLIS.jar">
        <manifest>
            <attribute name="Main-Class"            
value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
            <attribute name="Rsrc-Main-Class" value="base.Main"/>
            <attribute name="Class-Path" value="."/>
            <attribute name="Rsrc-Class-Path" value="./ spring-jdbc-3.2.11.RELEASE.jar spring-jdbc-3.2.11.RELEASE.jar mysql-connector-java- 
8.0.13.jar joda-time-2.10.1.jar"/>
            </manifest>
            <zipfileset src="jar-in-jar-loader.zip"/>
            <fileset dir="${dir.workspace}/BLIS/bin"/>
        </jar>
    </target>
</project>

我知道,期望事情“正常运转”是不现实的。问题是我不确定我在哪里搞砸了。是因为Main-Class是资源加载器,而不是base.Main?我以前没有使用过此导出器,但是我假设它在检查main是否存在之前会“加载资源”。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这主要是由于客户端计算机的类路径中的javafx.application.Application类不可用,即使它在您的计算机中也是如此。

Oracle默认情况下包含javafx,但OpenJDK不包含。如果是OpenJDK,则需要单独安装openjfx。

最好在两台计算机上检查Java版本并进行比较。

希望这将帮助您解决问题。