我看过一些在线演示,其中简要提到了Java 9中的独立应用程序,但是我有一个问题需要解决。
使用新的模块系统,现在只允许包含运行应用程序所需的最少代码量。但是,希望运行该应用程序的系统是否仍然需要JRE,或者该程序的基本模块中可以包含某些内容?
我怀疑是后者,因为下载Java最新版本的页面(此处)仍然显示版本8_151。
TL; DR-使用Java 9,是否可以创建一个自包含的可执行文件,可以在未安装JRE / Java的系统上执行?
是的,这可以通过jlink
(JEP
282
)实现,但是您的所有代码 和 依赖项都必须是模块化JAR(即带有的JAR
module-info.class
)。它是这样的:
jlink
--module-path $JAVA_HOME/jmods:mods
--add-modules your.app
--launcher launch-app=your.app
--output your-app-image
详细地:
--module-path
列出包含模块的文件夹-这需要包括您要使用的JDK附带的平台模块(在中$JAVA_HOME/jmods
)和应用程序模块(在中mods
)--add-modules
命名您希望运行时映像包含的模块-包括其所有(传递)依赖项--launcher
是可选的,但非常方便;它.bat
使用给定名称(launch-app
)创建一个特定于操作html" target="_blank">系统的启动器(例如Windows上的启动器),以启动指定的模块(your.app
在这种情况下,假定为其定义了主类)--output
指定在哪里创建运行时映像我已经和这件事斗争了一天多,在SO和其他地方读了很多帖子,但我仍然有问题。 我需要在一个自包含的JavaFX应用程序包中包含我的应用程序图标。我使用的是JDK1.8.0_45及其包含的JavaFX包。我正在使用Maven构建.exe,除了我不能包含我的图标外,它都运行得很好。 下面是我的pom.xml: 使图标出现在标题栏中的是javapackager部署步骤的参数。这一行告诉inno安装程序使用
按照这里和这里的指示。我使用的是JDK7U9和NetBeans 7.2.1。我所做的是创建相对于我的项目根文件夹的整个路径(C:\users\administrator\desktop\icotest\package\windows\icotest.ico)。我同时尝试了48x48和256x256的大小。下面是我的项目Icotest的树状结构概述: 这就是build.xml的样子:
为了完整起见,我使用Oracle JDK 1.8.0_66 for Mac。
谷歌拒绝了我的应用程序,我在提交应用程序作为生产版本时遇到了这个安全错误: 隐含的内部意图 您的应用程序包含隐式内部意图漏洞。有关详细信息,请参阅此Google帮助中心文章。 我应用了这里列出的所有建议:修复隐式悬而未决的漏洞 但错误依然存在。 我的服务: 清单: 这项服务在很多地方都是通过以下三种方式启动的:(根据谷歌的建议,我添加了PendingEvent.FLAG_IMMUTABLE) 方法
定义 一个应用可以包含其他应用。一个被包含的应用有它自己的应用目录和 .app 文件,但是它是作为另一个应用的监督树的一部分被启动的。 一个应用只能被一个其他的应用所包含。 一个被包含的应用也可以包含其他应用。 一个不被任何其他应用所包含的应用被称之为主应用。 应用控制器在加载一个主应用的时候会自动加载任何被包含的应用,但并不会启动它们。被包含的应用的顶层督程应由进行包含的应用的某个督程来启动。
问题内容: 如问题所述,在Java编程语言中,有多少内存用于引用对象? 请,如果您有可信赖的来源更好。 非常感谢! 问题答案: 语言或JVM规范未指定。但是,通常公认的是,任何明智的实现在32位计算机上都是4字节,而在64位计算机上则是4到8字节(取决于压缩指针设置等)。