仅仅一个“javaw.exe”就足以在没有安装JRE的Windows机器上运行一个简单的Java应用程序吗?

仅仅一个“javaw.exe”就足以在没有安装JRE的Windows机器上运行一个简单的Java应用程序吗?,java,Java,我想,标题是自我描述的。如果有必要,我只添加我的导入: import javax.sound.sampled.*; import javax.swing.*; import java.awt.*; import java.io.*; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.text.SimpleDateFormat; import j

我想,标题是自我描述的。如果有必要,我只添加我的导入:

import javax.sound.sampled.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

那么,如果没有安装JRE,那么仅仅一个javaw可执行文件就足以在Windows机器上运行这个应用程序了吗

Java运行时不仅仅是一个可执行的二进制文件

它包含导入语句使用的所有编译类。以及各种其他二进制文件,如DLL}

所以简单的答案是:不

Java9即将引入新的工具,允许您创建只包含应用程序所需类的二进制工件。或者更准确地说:应用程序需要的那些模块。
但这仍然意味着你必须做一些事情来利用这一点

Java运行时不仅仅是一个可执行的二进制文件

它包含导入语句使用的所有编译类。以及各种其他二进制文件,如DLL}

所以简单的答案是:不

Java9即将引入新的工具,允许您创建只包含应用程序所需类的二进制工件。或者更准确地说:应用程序需要的那些模块。
但这仍然意味着你必须做一些事情来利用这一点

否,您必须安装JRE,还可以配置系统变量路径,但这是可选的,但会增加方便性

否,您必须安装JRE,还可以配置系统变量路径,但这是可选的,但会增加方便性

您不需要安装JRE,您可以在应用程序中提供专用JRE,而无需在客户端计算机上安装JRE。但是javaw.exe还不够。看


此外,还有一些安装程序可以将你的应用程序和JRE打包到一个可执行文件中,让它看起来像是一个正在运行的文件,而无需解包——我认为它们可以在文件中映射文件系统调用。如果我记得很清楚,InstallAnywhere可以做到这一点,但可能还有其他安装程序也可以做到。

您不需要安装JRE,您可以在应用程序中提供专用JRE,而无需在客户端计算机上安装JRE。但是javaw.exe还不够。看


此外,还有一些安装程序可以将你的应用程序和JRE打包到一个可执行文件中,让它看起来像是一个正在运行的文件,而无需解包——我认为它们可以在文件中映射文件系统调用。如果我记得很清楚,InstallAnywhere可以做到这一点,但可能还有其他安装程序也可以做到。

不,不是这样,您至少会错过所需的本机库.dll/。so@Aaron还有几罐ofc,好的,伙计们,谢谢!在这里提问要比在我的电脑上卸载JRE并亲自尝试更容易;不,不是这样,您至少会错过必需的本机库.dll/。so@Aaron还有几罐ofc,好的,伙计们,谢谢!在这里提问要比在我的电脑上卸载JRE并亲自尝试更容易;这就是我所怀疑的。谢谢@GhostCat如果您指出的新工具是利用应用程序类数据共享,那么它将是Java10或更高版本。我认为它被称为jlink。而且它依赖于模块定义。据我所知,jlink实际上是一种使您自己的自定义JRE更小的方法,它只选择您想要的模块,因为它是模块化的,并且模块具有依赖性。一般来说,我想定制JRE的问题不只是使用jlink组装的JRE,而是您必须自己更新它们,正如在上所提到的,这就是我所怀疑的。谢谢@GhostCat如果您指出的新工具是利用应用程序类数据共享,那么它将是Java10或更高版本。我认为它被称为jlink。而且它依赖于模块定义。据我所知,jlink实际上是一种使您自己的自定义JRE更小的方法,它只选择您想要的模块,因为它是模块化的,并且模块具有依赖性。定制JRE的问题一般来说,我想,不仅仅是使用jlink组装的JRE的问题是,您必须自己更新它们,正如在中提到的,您不需要配置路径,它只是更方便。您不需要配置路径,它只是更方便。谢谢,伙计。我已经了解了Launch4j,它的效果非常好。谢谢你的提醒,我还没有赶上它。似乎它可以在任何平台上用于构建可以针对特定JRE或捆绑它们的Windows可执行文件。我猜这些将是相当大的EXE,但是由于在其他评论中提到的jlink工具只保留了您需要的Java VM模块,它确实有潜力谢谢,伙计。我已经了解了Launch4j,它的效果非常好。谢谢你的提醒,我还没有赶上它。似乎它可以在任何平台上用于构建可以针对特定JRE或捆绑它们的Windows可执行文件。我猜这将是相当大的前男友,但在其他评论t中提到了jlink工具 o只保留您需要的Java VM模块,它确实有潜力