java - 可执行Jar : Could not load main (but main is in ANT xml)

标签 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 中的导出可运行 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 是否存在之前“加载资源”。

如有任何帮助,我们将不胜感激。

最佳答案

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

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

最好检查两台机器中的 Java 版本并进行比较。

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

关于java - 可执行Jar : Could not load main (but main is in ANT xml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103533/

相关文章:

java - 主类不能设置为现有类

java - 是否可以使用多个 java ObjectOutputStream 对象写入单个 java ObjectInputStream 对象?

java - hibernate hql - 执行更新查询后返回更新的行ID列表

java - 使用字符串文字池初始化的字符串变量

java - 如何使用 JPA 2 将复杂对象数组作为存储过程中的 IN 参数传递

java - 如何导出带有图像的 Jar?

android - ImageButton 打开和关闭

java - 简单的修改导致错误

java - 如何以直接从 Eclipse 和可运行 JAR 中工作的方式从/src/main/resources 加载资源?

java - 如何防止 Android Archive 库中的重复依赖