0

我想为我的java项目创建一个可执行文件,我记得以前我是用Jbuilder或netbean做的,但我不知道我应该如何在JDeveloper中制作可执行文件(EXE文件)

请给我建议,请描述清楚...

编辑:这是简单的桌面应用程序。它不是网络应用程序......

EDIT2:我删除了检查参数的部分并运行我遇到这个问题的程序:我该怎么办?

Executing: C:\JDeveloper\mywork\SourceManagmentTools\Client\deploy\SMT.exe
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: oracle/jdeveloper/layout/VerticalFlowLayout
    at Main.GUI.SmMainFrame.<init>(SmMainFrame.java:134)
    at Main.GUI.SmRun.<init>(SmRun.java:25)
    at Main.GUI.SmRun$1.run(SmRun.java:82)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: oracle.jdeveloper.layout.VerticalFlowLayout
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 17 more
4

3 回答 3

1

你考虑过 Launch4j吗?

关于您的配置问题,Launch4J文档说:

运行时的其他 JVM 选项

当您创建包装器或启动器时,所有配置详细信息都会编译到可执行文件中,并且如果不重新创建它或使用资源编辑器破解,则无法更改。Launch4j 2.1.2 引入了一项新功能,允许在运行时从 .l4j.ini 文件传递​​额外的 JVM 选项。现在您可以在配置文件、ini 文件或两者中指定选项,但不能覆盖它们。ini 文件的名称必须与可执行文件的名称相对应(myapp.exe : myapp.l4j.ini)。参数应以空格或换行符分隔,支持环境变量扩展,例如:

# Launch4j runtime config
-Dswing.aatext=true
-Dsomevar="%SOMEVAR%"
-Xms16m

您可以考虑的其他替代方案是JSmoothWinRun4J

于 2011-04-17T22:03:16.917 回答
0

这么简单的家伙......我用这种方式解决了我的问题......最简单的方式......

首先检查客户端计算机中安装的 java 版本,在 CMD 中通过以下命令检查:java -version

在确定了 java 版本之后,你需要制作一个 bat 文件。[版本冲突可能导致 null 除了] 之后你应该知道你在这个项目中使用了哪个外部包...例如我使用 1 个文件连接到 oracle 数据库“ojdbc14”和另一个用于 GUI,之后你可以简单运行您的程序,甚至通过在您的类的可运行名称末尾提及它们来将参数传递给它们:

java -client -classpath ojdbc14.jar;lipstikLF-1.1.jar;swing-layout.jar;smt.jar Main.GUI.SmRun rimrim

我想我们在项目中使用的那些库也需要运行,但我不确定,我只是建议这项工作

java -client -classpath <name of you library>;<name of you library>;<name of your jar file> nameOfPackage.nameOfRunClass parameter[if any]

如果有人在这篇文章中添加一些有用的信息,我将不胜感激

于 2011-04-19T16:38:23.193 回答
0

如果您的桌面应用程序具有 GUI,并且您可以从站点分发它,请查看Java Web Start

JWS 为最终用户提供“一键式”安装选项、自动更新、桌面集成、启动屏幕等等。它是标准 Java(1) 发行版(自 1.4.2 起)的一部分,并且受 Oracle 支持。


(1) JWS 适用于标准 Jar 文件 - 不需要 exe,这意味着它可以在 *nix 和 Mac 上运行。

于 2011-04-17T21:51:21.523 回答