不安装java未配置java环境变量情况下运行java项目

avatar 2021年11月14日13:43:10 0 69 views

我们经常帮别人做了一个项目,对方想直接运行, 但是电脑上可能没有安装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命令文件。

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0