如何使用JDeveloper为我的Java应用程序生成可执行文件

时间:2011-04-17 21:33:43

标签: java jdeveloper

我想为我的java项目创建一个可删除的文件,上一次我用Jbuilder或netbean做的,我记得但是我不知道如何在JDeveloper中做它以制作Excutable文件(EXE文件)

请告诉我,请说清楚......

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

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

3 个答案:

答案 0 :(得分:1)

您考虑过Launch4j吗?

关于配置问题,Launch4J documetation说:

运行时的其他JVM选项

  

创建包装器或启动器时   编译所有配置详细信息   进入可执行文件并不能   改变而不重新创建它   用资源编辑器进行黑客攻击。   Launch4j 2.1.2引入了一个新的   允许传递额外的功能   运行时的JVM选项   .l4j.ini文件。现在你可以指定了   配置文件中的选项,ini   文件或两者,但你不能   覆盖他们。 ini文件的名称   必须对应于可执行文件   (myapp.exe:myapp.l4j.ini)。该   参数应该用。分隔   空间或新线,环境   支持变量扩展   例如:

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

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

答案 1 :(得分:0)

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

JWS为最终用户提供“一键式”安装选项,自动更新,桌面集成,启动屏幕等等。它是标准Java(1)发行版的一部分(自1.4.2开始)&amp;得到了Oracle的支持。


(1)JWS使用标准的Jar文件 - 不需要exe,这意味着它可以在* nix&amp; Mac中。

答案 2 :(得分: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]

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