Java 从运行在其他计算机上的jar文件创建exe

Java 从运行在其他计算机上的jar文件创建exe,java,installation,java-web-start,launch4j,jsmooth,Java,Installation,Java Web Start,Launch4j,Jsmooth,我有一个简单的应用程序,由3个类组成,分别是PercentIdentity.java、GUI.java和Aligner.java 我正在使用Intellij Idea 11.1.3(我也在Eclipse中试用过)和JRE 1.7。我的操作系统是Win7 x64 当我双击使用Intellij创建的jar文件时,我的程序运行良好。此外,当我执行命令“java-jar*.jar”时,它也可以工作,其中*是我的jar文件的名称 现在我想创建一个.exe文件,以便在其他计算机上运行该程序 我用Winrar

我有一个简单的应用程序,由3个类组成,分别是PercentIdentity.java、GUI.java和Aligner.java

我正在使用Intellij Idea 11.1.3(我也在Eclipse中试用过)和JRE 1.7。我的操作系统是Win7 x64

当我双击使用Intellij创建的jar文件时,我的程序运行良好。此外,当我执行命令“java-jar*.jar”时,它也可以工作,其中*是我的jar文件的名称

现在我想创建一个.exe文件,以便在其他计算机上运行该程序

我用Winrar打开了.jar文件,可以看到META-INF文件夹中的清单文件(manifest.MF)

我的清单文件: 在启动4jJSmoothIExpress上花费了大量时间之后,我成功地创建了在我的计算机上完美运行的.exe文件。但是,当我在另一台计算机上运行.exe文件时(同样使用Win 7 x64),会出现以下错误:

“Java虚拟机启动器: 找不到主类: com.example.PercentIdentity.Program将退出。“

我的JSmooth设置如下: 骨架选择:窗口包装器

可执行文件:test.exe

当前目录:。(不知道该放什么)

主类:com.example.PercentIdentity

嵌入式Jar:*.Jar

Classpath:*.jar(同上)

最小JVM版本:1.0 最大JVM版本:1.7

我在Launch4j中使用的设置: 输出文件:C:\Users\{name}\Desktop\test.exe

罐子:*。罐子

(我没有选中复选框“不要包装罐子”)

舱单:(空)

最低JRE版本:1.0

我在另一个类似的问题中看到了一个答案,这个问题可能是因为JRE 1.7而出现的,所以我也尝试了1.6。然而,这次它甚至没有在我自己的电脑上运行

有人知道我如何克服这个问题吗


提前感谢。

在Jsmooth中,类路径是用于.jar的吗? 不要说它很重要,可以为jar留空(隐式位置), 如果可能的话,当前目录留空可能比点更好。\(对于windows,带有反斜杠-表示当前目录)

对于main类,当类路径和路径被搜索时,您可能只需要说“PercentIdentity”,所以如果.jar中只有一个,那么将选择它

关于暗示jar所在的位置,可能会给出一个空白符号,或者在一些配置文档中,会给出一个符号,dot通常用于web服务器,除非它是web服务器的一部分。在windows或/在unix中表示“此目录在其中”

如果您希望学习少量的C/C++语言,可以使用
execv()函数和一个数组或execlp()函数以及一个列表,但是您需要学习大量的C/C++才能使用**args指针数组传递命令行参数。

“现在我想创建一个.exe文件,这样我就可以在其他计算机上运行该程序了。”您是说“其他版本的Windows”吗?更好的部署策略是使用。使用上面链接的Wiki中所述的
deployJava.js
,确保用户拥有正确的最低JRE。我在我的桌面上开发了这个程序,它拥有Win7 x64。我正在尝试在我的笔记本电脑上运行它,它也有Win7 x64。所以,我想让.exe在所有有Win7 x64和JVM的计算机上运行。我对JavaWebStart了解不多,但现在我将检查一下。谢谢你解决过这个问题吗?我有一个非常类似的问题。我试着将类路径留空。它不起作用。在“当前目录”中,无论我是否放置。\r\n它都会将其转换为点。所以,这次我让它空着。结果还是一样的错误。当我将“PercentIdentity”仅放在主类部分时,exe根本没有运行。我认为这部分是正确的。它需要包名。
Manifest-Version: 1.0
Main-Class: com.example.PercentIdentity (with an empty line in the end)