JavaFX 打包:NoClassDefFoundError

2023-12-13

我使用 maven 和 OpenJDK 1.8 打包 JavaFX 应用程序 我的 pom.xml 中的相关部分:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>ui.Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

现在重要的是这曾经有用。我知道这一点是因为我专门在包装最终起作用的地方进行了 git 提交。 经过一天左右的多次构建(我不知道发生了什么变化),由于以下错误,我无法再启动 jar:

$ java -jar target/app.jar
Error: Could not find or load main class ui.Main Caused by:
java.lang.NoClassDefFoundError: javafx/application/Application

当我查看 Jar 的内容时,我可以看到除了 JavaFX 类之外,所有依赖项都被明确包含在内。

我尝试过的:

  • 构建罐子javapackager
  • 修改 javafx-maven-plugin
  • 在我的 pom.xml 中显式添加 JavaFX 作为依赖项,希望程序集插件能够为我打包它

以上均未成功。我能够启动应用程序的唯一方法是直接从 IDE 中启动,这似乎意味着 JavaFX 库are在我的系统上仍然可用。

关于如何让它(再次)运行有什么想法吗?


简短回答

我使用 openJDK 11 运行我的 jar,其中不包含 JavaFX,同时使用 openJDK 8 构建它。案例已结。

调查结果、细节和原因

由于我的 IDE 能够毫无问题地运行我的代码,因此我认为该问题特定于我的配置/机器。事实证明 Canonical/Ubuntu 决定了

[对于]仿生[...]移动默认的 JRE/JDK在 main 中到 OpenJDK 11 中 2018 年 9 月/10 月作为 SRU。询问Ubuntu

并且,正如另一个 SO 线程所指出的:

JavaFX 11 不是 JDK 的一部分anymore 堆栈溢出

(这还包括如何使用 JDK 11 修复此问题的说明)

最后,按照墨菲定律,我在 10 月 4 日设置了项目打包,并决定在 10 月 8 日通过 apt 安装 eclipse,其中包括openjdk-11-jdk:amd64(这是登录有用的/var/log/apt/history.log).

This also更新了我的/etc/alternatives/java指向 v11。由于我在没有明确指定 java 二进制文件的情况下运行了 jar,因此它崩溃了。

Running

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/app.jar

快速测试按预期工作。现在我只需要将项目升级到 openJDK 11,否则始终使用特定的 JDK 8 运行我的应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 打包:NoClassDefFoundError 的相关文章

  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何设置菜单按钮和菜单项的样式

    我尝试更改菜单按钮中的样式 我可以更改菜单按钮样式 但不能更改其菜单项 无论我尝试什么 菜单按钮内的菜单项都保持不变 menu button fx background color black menu button label fx ba
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • React-native,动态渲染按钮点击

    我想动态生成一个按钮单击TouchableOpacity在反应本机中 我没有找到任何相关内容 我想要的只是从函数中调用 TouchableOpacity onPress 或查看其对按钮的效果 在钛合金中 我们正在做 button click
  • 无法在 docker 上执行 nvidia 运行时

    我正在尝试让 nvidia docker 在我的 centos7 系统上运行 cat etc systemd system docker service d override conf Service ExecStart ExecStart
  • 将通知链接到闪亮仪表板中的选项卡

    我想将通知链接到 内部 选项卡 为此 我遇到了这个 如何在闪亮的notificationItem中使用href 这似乎在加载应用程序后立即起作用 但在侧边栏中进行一些导航后 链接不再起作用 ui R library shiny librar
  • 如何在java中安全地存储加密密钥? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个 java 属性对象 其中包含 Web 服务的身份验证信息 我需要加密该数据 但我不知道需要在哪里存储加密密钥才能保证其安全 加密这些数据并以安全的方式检索它的最佳实践是
  • 从 AngularJS 指令访问属性

    我的 AngularJS 模板包含一些自定义 HTML 语法 例如
  • 如何在 Django REST 框架的可浏览 API 中编辑图标?

    我需要编辑可浏览 API 的图标 是否可以通过覆盖模板中的 api html 来做到这一点 这可以通过在 api html 中添加以下块来实现 block style block super endblock
  • Swift 3 尝试呈现谁的视图不在窗口层次结构中

    这个问题已被问过很多次 但即使在尝试了大多数可能的事情之后 我仍然无法找到适合我的解决方案 这是错误消息 警告 尝试在 上显示其视图不在窗口层次结构中的内容 注意 我没有使用任何导航控制器 我只是以模态方式呈现一个视图控制器我上面有一个用于
  • C 和 C++ 中的标准头文件列表

    在哪里可以找到 C 和 C 中所有头文件的列表 当我构建库时 我收到类似 tree h not found 我想这是 C 和 C 中的标准头文件 这引起了我想了解所有头文件及其贡献的好奇心 有地方可以找吗 我正在 Solaris Unix
  • 完成后将变量保存在 .awk 文件中以供下次运行

    因此 我有一个 awk 文件 它将一个订单文件拆分为多个订单文件 文件名从orders xml 包含100个订单的主文件 到递增的文件 如order 1 xml order 2 xml order 3 xml等 当 awk文件完成文件分割后
  • 用于添加到收藏夹的精灵或类似效果

    我有一个 iPhone 应用程序 其中包含 全部 和 收藏夹 选项卡 其中包含标准主细节布局 在 全部 选项卡上 用户可以选择 添加到收藏夹 我正在寻找一个好的视觉队列来向用户表明这样做后可以从 收藏夹 选项卡访问该项目 是否存在类似 精灵
  • Asp.net WebApi 中的自定义授权 - 一团糟?

    我正在阅读有关 Web Api 授权的多个资源 书籍和一些答案 假设我想添加仅允许某些用户访问的自定义属性 Case 1 我见过这种方法压倒性的 OnAuthorization 如果出现问题 它会设置响应 public class Allo
  • PyQt5:使用QThread弹出进度条

    我怎样才能实现进度条 in a 弹出窗口它通过所谓的 Worker 类 即消耗时间 CPU 的任务 监视正在运行的函数的进度QThread 我已经检查了无数的示例和教程 但进度条显示在弹出窗口中的事实似乎让一切变得更加困难 我相信我想要的是
  • FineUploader onProgress() 回调不适用于 Android

    Fine Uploader 的 onProgress 回调在 Android 设备上不起作用 这是我的代码 onProgress function id fileName loaded total alert debug this aler
  • 在Python中使用Win32api获取鼠标滚轮滚动

    我想读取鼠标滚轮滚动事件然后模拟它们 我知道我可以使用下面的代码来模拟它 Scroll one up win32api mouse event MOUSEEVENTF WHEEL x y 1 0 Scroll one down win32a
  • Angular 4 - 动态更新 Facebook 的元标签(开放图)

    我们如何动态添加 更新元标记 以便 Facebook Whatsapp 共享对话框选择它们 我将 Angular 2 应用程序升级到 Angular 4 以便在我们从 API 获取组件中的数据后 使用元服务动态添加 更新元标记 到目前为止
  • CSS:在不改变容器大小的情况下将某些文本加粗

    我有一个水平导航菜单 它基本上只是一个 ul 元素并排设置 我不定义宽度 而只是使用填充 因为我希望宽度由菜单项的宽度定义 我将当前选定的项目加粗 问题在于 在加粗时 单词会变得稍微变宽 这会导致其余元素稍微向左或向右移动 有什么聪明的方法
  • 是否可以在 RAM 中执行一些计算?

    理论上 有没有办法使用内存相关指令 例如move clflush或其他任何东西 例如xor例如 在两个相邻行之间 由于我对 RAM 和汇编的了解有限 我无法想到任何这样的可能性 不 任何计算都是在 CPU 或 GPU 或其他可以加载 存储到
  • SAS PRX 请提取子字符串

    我正在尝试使用 SAS PRX 函数从我的数据集中提取子字符串 但它只返回精确的匹配项 而我需要它更加灵活并提取匹配各种条件的匹配项 我已将我的数据复制到下面 如您所见 我的数据中的变量之一是 brandmodel 其中包含特定相机的品牌名
  • 如何使用annotation_custom()将GROB放置在绘图区域的精确区域?

    我正在尝试使用以下命令重现以下 base R 图ggplot2 我已经完成了大部分工作 但目前令我困惑的是连接图右侧边缘地毯图的线段的位置以及相应的标签 标签已通过以下方式绘制 在下面的第二张图中 anotation custom 我已经使
  • JavaFX 打包:NoClassDefFoundError

    我使用 maven 和 OpenJDK 1 8 打包 JavaFX 应用程序 我的 pom xml 中的相关部分