如何在Windows上通过点击图标来运行Java程序?

4

我编写了一个使用Java Swing库的Java程序。现在,我想通过在Windows上双击可执行文件来执行此程序,就像执行任何其他带有GUI的程序一样。我该怎么做?


可能是将Java程序编译为exe的重复问题。 - npinti
我怀疑很多人不确定你的问题是“如何制作.exe文件?”还是“如何为我的应用程序制作桌面图标?”我在我的答案中添加了一个屏幕截图,指示我认为你正在询问的内容(第二个选项)。请澄清问题。 - Andrew Thompson
12个回答

7
由于它是基于Java并具有GUI,显而易见的答案是使用Java Web Start来部署它。
Java Web Start(JWS)是Oracle Corporation技术,用于直接从网络或Internet链接启动丰富客户端(Swing,AWT,SWT)桌面应用程序。它为支持Java的平台提供“一键式”安装。
JWS提供许多吸引人的功能,包括但不限于:闪屏、桌面集成、文件关联、自动更新(包括惰性下载和程序控制更新)、通过平台、架构或Java版本划分本机和其他资源下载、运行时环境的配置(最小J2SE版本、运行时选项、RAM等)、使用扩展轻松管理常见资源等。
在“桌面集成”中读取受支持平台上的桌面快捷方式和菜单项。

Desktop Icons on Windows 7

右侧的两个图标(JotPad和Star Zoom Animation)都是基于Java的应用程序,使用Java Web Start安装。由于JotPad是沙盒化的,用户将被提示是否创建快捷方式。对于具有更高权限级别的应用程序,不提供该选择,因此最好使用IntegrationService安装/删除快捷方式和菜单项-它允许应用程序(在提示用户后)在运行时创建/删除它们。

1
很遗憾,这不再是一个好的选择了,自JDK 9起,Java Web Start系统已经被弃用。 - Tag Howard

3

有几种选项:

  1. 创建您项目的可执行jar文件。要使此jar文件工作,必须将javaw设置为默认应用程序以打开它。
  2. 创建您项目的exe文件。
  3. 创建一个批处理文件来运行您的jar文件。

可以参考这个链接:如何将我的Java程序转换为.exe文件?


3

除了创建本机可执行文件等良好选择外,还有另一种有用的方法:创建快捷方式。

  • 右键单击桌面,在“新建”选项中展开“快捷方式”。
  • 输入“javaw.exe”。点击下一步。
  • 随意命名。点击完成。
  • 您会注意到在桌面上新创建了一个快捷方式。右键单击它并选择“属性”
  • 在“目标”文本框中,附加“-jar path-to-your-jar.jar”,其中将“path-to-your-jar.jar”替换为实际路径。
  • 您现在也可以自行更改图标。

此快捷方式可以固定到任务栏,并且可以从任何地方使用(考虑提供对JAR的绝对路径)。


嘿,伙计,你的解决方案很好,但我有点麻烦,当我点击图标时,它显示消息说“无法创建Java虚拟机”。 - Saumil
这可能适用于普通的Java程序,但不适用于GUI。我已经测试过了,在WIN 7中它不起作用。 - MaxZoom
1
在Windows 7和Windows 10下,无论是“常规程序”还是GUI,都可以正常工作(快捷方式无法区分)。 - Ti Strga

2
你需要从Java程序中创建exe文件。 创建可执行的JAR文件
  1. First, make sure you have installed Java 1.2 or above. This facility is not available in previous versions of Java.
  2. Next, create your working java system. In general, you will want to put it into a package. For this example, I created a trivial HelloWorld application that prints out "Hello World" plus the first command line argument, and placed it into the package "psae". Therefore, the HelloWorld files (HelloWorld.class, HelloWorld.java) were located in the directory psae. I tested the system to make sure it worked before going on to the next step.
  3. In the directory in which the psae is located, created a file called "mainClass". This file contains a single line specifying where the main Class is to be found in the jar file. Note that I use the package specification. Here is the single line: Main-Class: psae.HelloWorld Note: make sure you type a carriage return after this line; some windows systems need it and will report a "Failed to load Main-Class manifest attribute" error.
  4. Next, I create a jar file called psae.jar using the "jar" command in Java2. I use the "m" command line argument to specify the manifest file mainClass, which adds information to the jar file on where the main class will be found. Here is the jar command: bertha:~ > jar cmf mainClass psae.jar psae
  5. Just for fun, and to check what's happened, I print the table of contents for the jar file I just created. Here's the command and its result: bertha:~ > jar tf psae.jar META-INF/ META-INF/MANIFEST.MF psae/ psae/HelloWorld.java psae/HelloWorld.class
  6. Having successfully created the jar file, I can now invoke java2 on it with the command line argument:

    bertha:~ > java -jar psae.jar Philip
    Hello World Philip
    


1

你可以使用类似 Launch4j 的工具。 同时也可以看看 JSMooth

希望能对你有所帮助。


1

有两种方法。两种方法都需要将您的代码打包成 .jar 文件。

第一种方法是使用像 Launch4j 这样的工具构建实际的 .exe 文件。它需要您设置诸如告诉它要执行哪个类、使用哪个图标、哪个 JRE 是可行的、使用什么 JRE 参数等内容。

第二个选项是使 .jar 本身可执行。您可以通过向 .jar 添加清单来实现这一点。清单是描述 jar 的小型配置文件。其中一个属性是 Main-Class,它定义了入口点。换句话说,它指定了当用户双击文件时应调用哪个类的 main 函数。 这里有一个关于清单的基本教程:http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

第二个选项更容易上手,但用户通常会知道如何处理 .exe 文件。

请注意,如果任何一种方法抱怨找不到类,请确保将类路径清单属性设置为与您的项目匹配。


"但用户更经常知道如何处理 .exe 文件。为什么用户需要看到 EXE 或 Jar?使用 JWS,Jar 就会变得“无形”起来。" - Andrew Thompson

0

以下是如何通过右键单击Java程序来运行它的方法(换句话说,从Windows资源管理器上下文菜单中)。这个方便的技巧非常适合需要在飞行中测试其简单程序的初学者。适用于Win7和XP系统。

[注意:根据情况,您可能需要从Java文件顶部删除package指令。]

步骤1.在您选择的文件夹内创建一个批处理文件(例如,RWJ.bat),比如在C:\Program Files\Java中。

步骤2.使用以下命令填充RWJ.bat(对于简单类,它们将正常工作,但您当然可以根据特定需求调整它们,指定编译器/解释器开关,传递参数,添加echo off,删除pause等):

javac %1
java %~n1
pause

第一条命令将右键单击的文件的完整名称传递给Java编译器;第二条命令剥离文件扩展名,并仅向JVM提供类名。

步骤3. 将以下密钥添加到您的注册表中:HKEY_CLASSES_ROOT\*\shell\Run With Java,然后创建其命令(默认值):C:\Program Files\Java\RWJ.bat %1

Hacking Registry

第四步。 通过右键单击您的Java类并选择使用Java运行选项来运行它。

Right-clicking Java class

Java class up and running

就是这样。

另一种通过指向和点击来运行Java程序的方法是使用AOT编译器。例如,GCC有一个名为GCJ的入口点,可以用于将源代码编译成字节码和标准可执行文件,以适应您特定的操作系统。

最后,可以运行WSH等而不是批处理文件。


0
如果您有一个可执行的jar文件,只需在文件上按Shift +右键,并将其设置为由javaw打开。另一种选择(如果您想向应用程序传递参数)是创建一个.bat文件,在其中通过java或javaw启动您的应用程序。

0
在Eclipse中,右键单击您的“项目”,选择“导出”,然后选择“Java->可运行的JAR文件”,选择您的项目名称并完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接