可运行的 JAR 无法与引用的库一起使用

2024-05-06

我想创建一个可运行的 JAR,其中包含引用的库,即jackson http://jackson.codehaus.org/,在 Eclipse 中通过导出。过去有fat jar这似乎是 Eclipse 提供导出到可运行 JAR 之前的 goto 解决方案。

由此question https://stackoverflow.com/questions/8302894/what-is-the-difference-between-runnable-jar-library-handling-options,第一个选项就是我正在寻找的。由于目前它是一个小项目,因此将所有内容放在一起不会有问题(而且这对我来说更容易,因为我刚刚开始使用 JAR、runnables 和 jnlp)

当我尝试启动它时,会出现一个警报窗口,提示存在问题并尝试在控制台中找到它(我无法打开)。

如果我删除对此引用库的任何使用,一切都会完美运行(除了它根本没有执行我想要的操作的部分)。该窗口看起来像我设计的那样,但如果没有库就没有任何功能。

我什至没有堆栈跟踪来帮助解决问题。我创建了其他项目,没有任何引用的库,一切都很好。所以我已经缩小了范围。

因为我让 Eclipse 处理导出和所有事情,所以我认为您不需要清单来查看它是否正常。如果您有任何疑问,我会提供您需要的信息。不用说,该项目直接从 Eclipse 运行。

蚀 版本:Indigo 服务版本 2 内部版本号:20120216-1857


编辑以下内容Baqueta https://stackoverflow.com/users/213727/baqueta的回答

当我这样做时会发生什么,我得到一个自定义的 RuntimeException。我在这里有点困惑。这是我的代码的简单解释。 我有一个实用程序类(UtilityJSON),它使用引用的库(jackson)。该实用程序类的构造函数实例化引用库中定义的对象,我们将其称为映射器。 UtilityJSON的方法使用“映射器”的方法。此时引发异常。我感到困惑的原因是“映射器”已成功实例化,但使用其方法会引发异常。如果 jar 找不到引用的库,它可能无法创建对象“映射器”。但从 Eclipse 运行该项目一切正常。 运行可执行 jar 时有什么方法可以调试吗?也许会在控制台中回显一些内容。


Edit 2

我可能已经发现了错误。我的程序读取项目内文件夹中的 *.txt 文件。当探索 jar 的内容时,我发现不包含该文件夹,因此出现异常。所以现在的问题是:如何包含这个文件夹?它位于项目的根文件夹中。


您可以尝试以下操作:

  1. 在 Eclipse 中,转到“项目”->“属性”。
  2. 从左侧列中选择“Java 构建路径”。
  3. 选择“订购和导出”选项卡。
  4. 在列表中找到“jackson”并确保已选中它。

EDIT回答您更新的问题:

在 Eclipse 中,在 Package Explorer 中找到 *.txt 文件。右键单击它并选择“构建路径”->“添加到构建路径”。然后按照上面的说明操作,确保文件包含在 Jar 中。最后,进行清理和重建。

如果您要添加更多资源,通常的做法是(并且很有意义!)拥有一个资源文件夹(通常称为“res”)。然后,您可以将整个文件夹添加到构建路径,以便其中的所有资源都包含在 Jar 中。

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

可运行的 JAR 无法与引用的库一起使用 的相关文章

  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 动态选择端口号?

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

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 构建/部署 EJB .jar 及其依赖项

    我是 Java EE 新手 我使用 Maven Eclipse 和 jBoss WildFly 我有一个war项目 当我构建项目时 它的所有依赖项都打包在war文件输入WEB INF lib 现在我正在尝试创建一个ejb项目 我有
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 打印 OSGI 包类路径?

    在普通的 java 应用程序中 可以使用以下命令打印类路径的内容 String ss System getProperty java class path System out println ss 但是如何打印使用 eclipse PDE
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 使用 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单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • java.lang.OutOfMemoryError:Scala 上超出了 GC 开销限制

    我是 Scala 开发人员 我在Routes它包含的文件1008行如果我添加另一行 则会抛出下面的错误 Uncaught error from thread sbt web scheduler 1 shutting down JVM sin

随机推荐