我正在使用jpackage在Windows上创建本机Java安装程序。我的应用程序还需要一个JDBC库(例如mysql-connector-java-8.0.28.jar
)来运行本机应用程序以连接数据库。
我正在使用NetBeans构建应用程序,在构建之后,我看到mysql-connector-java-8.0.28.jar
位于dist/lib
directory中。
这意味着,如果我在 dist
目录中运行 java -jar .jar我的程序
,应用程序将引用 lib
库中的 mysql-连接器-java-8.0.28.jar
。
我的项目中的目录是这样的:
dist/
lib/mysql-connector-java-8.0.28.jar
myProgram.jar
这是使用jpackage并安装本机应用程序后的结果:
myProgram/
app/myProgram.jar
runtime/<the jre directory>
myProgram.exe
我运行应用程序,我得到的错误是JDBC类找不到:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/naming/NamingException
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:186)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
我使用此命令创建安装程序:
jpackage \
--type exe \
--runtime-image minimal-jre \
--main-jar myProgram.jar \
--input target \
--win-console
那么,我的问题是,如何捆绑lib
文件夹,让. exe
程序可以连接JDBC类?
文档:https://docs.oracle.com/en/java/javase/14/docs/specs/man/jpackage.html
我向Maven或Gradle声明了所有依赖项(包括JDBC驱动程序),该工具自己将构建应用程序jar,并将其与所有依赖项一起放到lib文件夹中。JPackage将使用该lib文件夹创建一个包,在运行时将所有这些文件都放在类路径上。
因此,如果mysql.jar最终没有出现在该目录中,也许您想运行jpackage两次:
有了这个,您可以自定义jpackage无法开箱即用的很多东西。
我有两个捆绑说A和B。A 依赖于 B(在 A 的 MANIFEST 中指定为 Required-Bundle:B)。 现在我安装两个A, B包一个接一个(c 我从异常中了解到捆绑包B尚未启动(已解决)。现在如何解决这个问题呢? 解决这个问题的唯一方法是排序包 顺便说一下,我用的是春分。
我在NetBeans平台(RCP)上开发了一个JavaSwing应用程序。我想将Windows JRE与NetBeans生成的安装程序一起包含,以防PC没有安装JRE,但我不知道如何做到这一点。我尝试按照以下说明操作,但失败了(我发现这些说明假设您完全了解JDK和JRE上的所有内容,例如,我会得到消息“pack 200”不被识别为内部或外部命令......似乎有些路径是错误的或过时的): 如何在安
当我跑的时候
我编写了一个定制的NiFi处理器,它使用一些Hadoop类,处理流文件,并在Avro之间序列化流文件。 处理器的pom.xml文件如下所示: 因为我已经将标记为,所以它不会绑定在生成的NAR文件中。现在,我可以做一个快速修复,完全删除作用域并创建NAR,但NiFi会抱怨next class not found错误。 我想知道:
我正在尝试使用为我的Java应用程序创建安装程序。我在Windows10上使用OpenJDK15.0.1。我应该能够使用 更新:我最初发布的问题发生在我使用--app image选项时,但它只使用基本命令。 这运行时没有错误,但生成的可执行文件无法完成。当我运行它时,一个窗口会短暂弹出并在我有时间阅读它之前消失,然后再也不会发生任何事情。它永远不会问“你想允许这个应用程序进行更改吗?”。然后,如果