我们经常帮别人做了一个项目,对方想直接运行, 但是电脑上可能没有安装jdk或没有配置环境变量,怎么办呢。
尤其是那种项目打包成exe那种,一般都是给非开发者使用的,对方大概率是没有安装java的,即便是默认安装了,但是可能也没有配置环境变量。
本文介绍在不安装java的环境下如何java项目。
一、准备jre文件
在我们本地java安装目录里,找到jre目录(也可以直接去jdk目录下的jre里获取)
二、准备编译后的项目
我这里是一个普通的java maven项目
代码结构如下
pom.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.liuyanzhao</groupId>
<artifactId>SearchTool</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SearchTool</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72</version>
</dependency>
</dependencies>
<build>
<!-- 加载资源文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.txt</include>
<include>**/*.jar</include>
<include>**/*.exe</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.txt</include>
<include>**/*.jar</include>
<include>**/*.exe</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<!-- jar发布时跳过此模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- 打包生成启动脚本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
<configuration>
<!--lib下直接存放jar,没有路径文件夹(如com/apache),如果没有这个选项则放在lib下的jar包会被com/apache类似的多层文件夹包裹起来 -->
<repositoryLayout>flat</repositoryLayout>
<configurationDirectory>data</configurationDirectory>
<configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
<copyConfigurationDirectory>true</copyConfigurationDirectory>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<!--生成的项目的目录位置,这里的client是项目的名称,你可以根据你的需要自己随便命名 -->
<assembleDirectory>${project.build.directory}/SearchTool</assembleDirectory>
<!--java启动参数 -->
<!-- <extraJvmArguments>-Xms1024m -Dfile.encoding=utf-8</extraJvmArguments> -->
<binFileExtensions>
<unix>.sh</unix>
</binFileExtensions>
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<repositoryName>lib</repositoryName>
<programs>
<program>
<!--指定主类,脚本名。会生成shell/bat两种类型,也可用platforms指定运行平台 -->
<mainClass>Main</mainClass>
<!-- 生成的脚本文件的名称,比如start.sh,你也可以根据你的需要命名成其他名字 -->
<name>start</name>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
</project>
主要看build里的插件。
mvn install 后打包结构如下
lib里是jar包,data里是上面resource里的文件,bin里是运行文件
如果我们没有安装jdk的情况下,运行start.bat是会报错的,会提示java命令不存在
三、解决不安装java运行start.bat
解决上面问题的方法很简单
1、我们将第一步里的jre拷贝到bin目录里
2、修改start.bat
如下图,把java改成jre\bin\java 即可,这里是读取的相对位置
同理,如果你是其他方式运行java项目,只要你能找到项目运行命令的入口,都可以改成调用你指定目录下的jre的java命令文件。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏