JDeveloper 使用库部署桌面应用程序 JAR

问题描述 投票:0回答:2

使用 JDeveloper 12.1.3.0.0,我创建了一个使用 Oracle JDBC 和 BC4J Oracle Domains 库的 Java 桌面应用程序(通过项目属性 -> 库和类路径添加它们)。一切都在 JDeveloper 中编译并运行良好,但我在部署工作 JAR 文件时遇到了困难。此 JAR 文件需要包含库,因为它将直接放置到客户端计算机上。

当前失败的尝试:我已在项目属性中创建了部署配置文件。此配置文件将我的 MainForm.java 设置为主文件,并包含一个文件组(类型:库),其中两个必要的库都被检查为贡献者。

使用此配置文件部署 JAR 后,我收到一条错误消息,指出“发生了 Jave 异常”。使用“java -jar archive.jar”通过命令提示符运行 jar,我得到以下跟踪:

选择了 JAVA_TOOL_OPTIONS:-Djava.vendor="Sun Microsystems, Inc." 线程“main”中的异常 java.lang.NoClassDefFoundError: oracle/jbo/JboException 在 java.lang.Class.getDeclaredMethods0(本机方法) 在 java.lang.Class.privateGetDeclaredMethods(来源未知) 在 java.lang.Class.getMethod0(来源未知) 在 java.lang.Class.getMethod(来源未知) 在 sun.launcher.LauncherHelper.getMainMethod(来源未知) 在 sun.launcher.LauncherHelper.checkAndLoadMain(来源未知) 引起原因:java.lang.ClassNotFoundException:oracle.jbo.JboException 在 java.net.URLClassLoader$1.run(来源未知) 在 java.net.URLClassLoader$1.run(来源未知) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(来源未知) 在 java.lang.ClassLoader.loadClass(来源未知) 在 sun.misc.Launcher$AppClassLoader.loadClass(来源未知) 在 java.lang.ClassLoader.loadClass(来源未知) ...还有6个

我做错了什么?任何建议都非常欢迎。

jar jdeveloper
2个回答
0
投票

与 Oracle 代表进行一些沟通后,这显然仅靠 JDeveloper 是不可能实现的。限制是 Java 无法进入打包在另一个 JAR 中的 JAR 文件。有人建议我使用 One-Jar,它将从库中提取并打包必要的类,或者创建一个脚本将类路径设置为外部库。


0
投票

我将描述一下,如果您的项目是在这样的应用程序中创建的:

所以我得到了 2 个库(jar)并将它们链接到我的项目。

工具->管理库->选择左侧的用户目录,单击新建...按钮并导航到每个罐子两次。通过点击 新建添加条目

接下来,您想右键单击您的应用程序(不是项目)并点击 Application props-> Classpath and Library 并且必须添加相同的 libs 。 现在它应该编译应用程序而不会出现错误。

关于 jar 部署如何将 3d 方库添加到您的项目

右键单击项目->项目道具->部署->单击右侧的+工作表图标->配置文件类型->jar文件->可选地选中压缩存档复选框 (混淆级别)并命名配置文件

现在project props->deploy并点击配置文件,您可以通过FileExplorer在应用程序的..\deploy文件夹中看到一个可运行的jar。

要将库添加到可执行 jar,请再次转到 项目属性 -> 部署,然后双击最近创建的配置文件。 在对话框中文件组->项目输出->贡献者->添加浏览到拾取罐子两次。 现在它全部链接起来并且必须构建完整的罐子。

下次使用 IDE 助手。 SO 关于 Jdev

的答案已经过时了
© www.soinside.com 2019 - 2024. All rights reserved.