首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用便携式JRE打包可执行jar?

要使用便携式JRE打包可执行jar,您需要遵循以下步骤:

  1. 首先,确保您已安装了Java Development Kit(JDK)和Apache Ant。您可以从以下网址下载它们:
  2. 下载并安装Apache Ant后,将其添加到系统的PATH环境变量中。
  3. 接下来,您需要下载一个名为“jlink”的工具,它可以帮助您创建一个自定义的Java运行时环境(JRE)。您可以从以下网址下载jlink:
  4. 使用jlink工具创建一个自定义的JRE。您可以使用以下命令:
代码语言:txt
复制
jlink --add-modules<module-list> --output<output-directory>

其中,<module-list>是一个逗号分隔的模块列表,<output-directory>是您要将JRE保存到的目录。

例如,如果您要创建一个只包含JavaFX的JRE,您可以使用以下命令:

代码语言:txt
复制
jlink --add-modules java.base,java.desktop,java.scripting,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web --output my-jre
  1. 现在,您需要创建一个名为“build.xml”的Ant构建文件,该文件将用于构建可执行jar文件。以下是一个简单的示例:
代码语言:xml<project name="MyProject" default="jar" basedir=".">
复制
 <property name="src.dir" value="src"/>
 <property name="build.dir" value="build"/>
 <property name="dist.dir" value="dist"/>
 <property name="main-class" value="com.example.Main"/>

 <target name="init">
    <tstamp/>
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${dist.dir}"/>
  </target>

 <target name="compile" depends="init">
    <javac srcdir="${src.dir}" destdir="${build.dir}">
     <classpath refid="master-classpath"/>
    </javac>
  </target>

 <target name="jar" depends="compile">
    <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
     <manifest>
       <attribute name="Main-Class" value="${main-class}"/>
      </manifest>
    </jar>
  </target>

 <target name="clean">
   <delete dir="${build.dir}"/>
   <delete dir="${dist.dir}"/>
  </target>
</project>
  1. 使用Apache Ant构建可执行jar文件。您可以使用以下命令:
代码语言:txt
复制
ant jar
  1. 最后,您可以使用以下命令运行可执行jar文件:
代码语言:txt
复制
java -jar dist/MyProject.jar

这样,您就可以使用便携式JRE打包可执行jar文件了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • CMake vs Make对比

    程序员现在已经使用了CMake和Make了很久。当您加入大公司或开始使用大型代码库开发项目时,您需要处理所有这些构建。你必须看到这些“CMakeLists.txt”文件浮动。你应该在终端上运行“cmake”和“make”命令。很多人只是盲目地按照指示,不是真的关心为什么我们需要以某种方式做事情。这个整个构建过程是什么,为什么它这样构造?CMake和Make之间有什么区别?有关系吗?可以互换吗? 事实证明,它们是完全不同的。了解他们之间的区别是非常重要的,以确保您不会陷入困境。在分析之前,先看看它们是什么。 make 我们设计软件系统的方式是我们首先编写代码,然后编译器编译并创建可执行文件。这些可执行文件是执行实际任务的可执行文件。“Make”是从程序的源文件中控制程序的可执行文件和其他非源文件的生成工具。 “Make”工具需要知道如何构建程序。它了解如何从名为“makefile”的文件构建程序。这个makefile列出了每个非源文件以及如何从其他文件中计算它。编写程序时,应该为其编写一个makefile,以便可以使用“Make”来构建和安装程序。简单的东西!如果您不明白,请再次阅读该段落,因为下一部分重要。 为什么我们需要“Make”? 我们需要“Make”的原因是因为它使最终用户能够构建和安装您的软件包,而无需了解其操作的详细信息。每个项目都有自己的规则和细微差别,每当你有一个新的合作者,它都会变得非常痛苦。这就是我们有这个makefile的原因。构建过程的细节实际上记录在您提供的makefile中。根据哪些源文件已更改,“自动”自动显示需要更新的文件。它还自动确定更新文件的正确顺序,以防一个非源文件依赖于另一个非源文件。 每当我们改变系统的一小部分时,重新编译整个程序将是低效的。因此,如果您更改了一些源文件,然后运行“Make”,它不会重新编译整个事情。它仅更新直接或间接依赖于您更改的源文件的那些非源文件。很整洁!“Make”不限于任何特定语言。对于程序中的每个非源文件,makefile指定了用于计算它的shell命令。这些shell命令可以运行一个编译器来产生一个对象文件,链接器生成一个可执行文件,以便更新一个库,Makeinfo格式化文档等。“Make”不仅限于构建一个包。您还可以使用“Make”来控制安装或卸载软件包,为其生成标签表, CMake的 CMake代表跨平台制作。CMake识别哪个编译器用于给定类型的源。如果您不知道,您不能使用相同的编译器来构建所有不同类型的源。您可以在每次建立项目时手动执行,但这将是乏味和痛苦的。CMake为每种类型的目标调用正确的命令序列。因此,没有明确指定像$(CC)这样的命令。 为了编码真正想要血液细节的垃圾,请继续阅读。如果你不是所有的,你可以跳到下一节。处理包含头文件,库等的所有常见的编译器/链接器标记都被平台独立的和构建系统无关的命令所取代。调试标志包括将变量CMAKE_BUILD_TYPE设置为“调试”,或者在调用程序时将其传递给CMake: cmake -DCMAKE_BUILD_TYPE:STRING =调试。 CMake还提供平台独立包含'-fPIC'标志(通过POSITION_INDEPENDENT_CODE属性)和许多其他。尽管如此,还可以通过CMake以及Makefile(通过使用COMPILE_FLAGS和类似属性)手动实现更为模糊的设置。当然,当第三方库(如OpenGL)以便携式的方式被包含时,CMake真的开始闪耀。 有什么不同? 如果您使用Makefile,即在命令行中键入“make”,则构建过程有一个步骤。对于CMake,有两个步骤:首先,您需要设置构建环境(通过在构建目录中键入cmake <source_dir>或运行某些GUI客户端)。根据您选择的构建系统(例如,在Windows上的Make on * nix,VC ++或MinGW等),这将创建一个makefile或相当的东西。构建系统可以作为参数传递给CMake。但是,CMake根据您的系统配置做出合理的默认选项。其次,您在选定的构建系统中执行实际构建。 我们将在这里跳入GNU构建系统领域。如果你不熟悉,这一段可能看起来像是jibber-jabber给你。好的,现在我给了法定的警告,我们继续吧!我们可以比较CMake和Autotools。当我们这样做时,我们可以看到Make的缺点,它们构成了Autotools创建的原因。我们还可以看到CMake对Make的明显优势。Autoconf解决了一个重要的问题,即可靠地发现系统特定的构建和运行时信息。但这只是便携式软件开发中的一小部分。为此,GNU项目开发了一套集成的实用工具来完成Autoconf开始的工作:GNU构建系统,其最重要的组件是Autoconf,Automake和Libtool。 “做”不能这样做,至少没

    03

    深圳鑫嘉恒专注创新研发 科技多元化产品受青睐

    深圳市鑫嘉恒科技有限公司(以下简称:鑫嘉恒科技)成立于2012年,总部坐落于深圳市龙岗区新中桥工业园,是国家高新技术企业、创新型中小企业和深圳市专精特新企业。公司自成立伊始,一直致力于储能电源类产品的设计、研发、生产和销售,在深圳市南山区科技园通过产学研合作设立了便携和家用储能技术研发中心,主要产品以消费级储能产品为主,专注于便携储能电源、应急电源和分布式家庭储能等领域的创新研发。公司掌握了国际先进的新能源储能技术及完整储能电池应用方案,在便携式储能、光储充一体化、电池PACK生产制造等方面,处于行业领先地位。深耕领域十余年,现已发展成为便携储能电源的主力厂商,出货量位于便携储能行业前列,月产能3万台,年产能36万台。公司自有智能化、自动化、信息化的制造体系,已通过IS09001/14000体系认证,产品已获得CE、UL、ROHS、UN38.3、FC、PSE、VDE等国际认证。公司在储能应用领域掌握多项核心技术,截至目前,拥有发明专利、实用新型、软件著作权等专利43项,公司研发核心人员来自于艾默生、华为等世界500强公司,具有丰富的研发设计能力和运营管理经验,平均行业从业经验12年以上。

    00

    java从入门到精通一(java开发入门)

    java的相关环境的配置 开篇语:大一下学期学习了java的基础案例教程,当然疫情期间是在家里上的学校网课,带我java课程的老师讲的特别好,虽然是以视频的形式来讲课,但老师讲的同样很精彩,很详细,因此啊,很感谢老师给我带来如此优质的课程。 学过的东西要总结是很好的习惯,总结,帮助我们更好的梳理知识,将我们的基础打扎实。从本篇开始,我会将我学过的java相关的知识做一个汇总。以便知识的分享,也方便以后自己的查阅。 java开发入门: 1.1:java来源: java是一门高级计算机语言,他是在1995年由SUN公司推出来的,不过后来由Orzcle公司巨资收购。 我们知道java是很受市场欢迎的,当时SUN公司将java划分为3个技术平台:javaSE,javaEE,javaME。javaSE是一个标准版,是为开发桌面应用和商务应用提供的解决方案;javaEE是为企业开发的;javaME呢,他是为开发电子产品和嵌入式设备提供的解决方案。 1.2 :java语言的特点 1:简单性,是的,相比c语言和c++,java还是比较简单的,但是相比python强大的库操作,其实java也并不简单。 2:面向对象性,java是一门面向对象性的编程性语言,当然这里讲可能比较抽象,但是当我们学到面向对象那里,就会很好理解了,因为我们时常new 一个对象,所以学java的单身狗们时常new个对象来安慰单身的自己,这也许就是程序猿的快乐吧,哈哈。 3:安全性,java语言它不支持指针,对内存的访问都是要用过对对象的实例变量来实现,所以它会更安全。我们学过c语言的数据结构就知道,指针可以很方便的操纵内存,而且,指针操纵内存的溢出攻击也是非常有名的。 4:跨平台性,这与java的虚拟机有关,java的程序是由虚拟机来执行的,并不是我们的操作系统,不同的操作系统中只需安装不同版本的虚拟机即可,可以通过这样来实现跨平台。奥利给。 我们来看图:

    04
    领券