Windows下无需Java环境直接运行Java Web项目

背景

有时候我们再给一台什么都没有安装的windows系统上需要运行java web的项目,可能我们要做的就是在这个windows系统上再安装java、mysql、tomcat、然后再新建数据库,导入数据等等操作,如果对于非开发人员,这将会耗时,最后可能也会无法顺利运行起来。
这里介绍一种方法,就是开发人员直接配置完,可以直接拷贝给非开发人员,他们可以直接双击运行起来。

正文

1 准备相关软件

  1. java
  2. mysql
  3. tomcat

首先,我们需要在本机上安装好java、mysql,以作者自己的本机为例:
本机上,安装的软件及路径如下:

  1. java路径为D:\Program Files\Java\jdk1.8.0_20
  2. mysql这里下载的是压缩的版本mysql-5.7.21-winx64.zip,然后用解压并进行安装,安装步骤可查看地址:https://blog.csdn.net/lianjie_c/article/details/102698686
  3. tomcat直接下载压缩版即可,这里采用的是apache-tomcat-8.5.34-windows-x64.zip

2 配置

新建一个文件夹,这里将这个文件夹命名为myserver
在myserver目录下新建app文件夹,用于存放项目。
这里用一个简单的项目helloworld

2.1 jdk

D:\Program Files\Java\jdk1.8.0_20复制到myserver的文件夹中

2.2 mysql

将mysql复制到myserver的文件夹中,笔者是通过上述来安装mysql的,所以这里采用的是将mysql的主目录即E:\mysql-5.7.21-winx64复制到myserver文件夹中。

2.2.1 修改配置

修改myserver\mysql-5.7.21-winx64\my.ini文件内容:

[mysql]  
default-character-set=utf8  
[mysqld]  
port=3307
basedir=../
#basedir=E:\mysql-5.7.21-winx64
datadir=../data
#datadir=E:\mysql-5.7.21-winx64\data
max_connections=200  
character-set-server=utf8  
default-storage-engine=INNODB  

如上配置,修改的内容为:

  1. basedir的值修改成../,代表当前路径的上一级路径。如这里my.ini的路径是C:\Users\lianj\Desktop\myserver\mysql-5.7.21-winx64\my.ini,则../代表的是C:\Users\lianj\Desktop\myserver\mysql-5.7.21-winx64
  2. datadir的值修改成../data,代表当前路径的上一级路径下的data目录。如这里my.ini的路径是C:\Users\lianj\Desktop\myserver\mysql-5.7.21-winx64\my.ini,则../data代表的是C:\Users\lianj\Desktop\myserver\mysql-5.7.21-winx64\data

2.2.2 启动mysql创建数据库导入数据

打开cmd命令窗口,然后使用cd命令切换到myserver目录,然后再进入mysql下的bin目录
使用以下命令启动mysql

mysqld.exe --defaults-file=../my.ini --console

启动完成后,再打开新的cmd命令窗口,同样先切换到mysql下的bin目录,然后使用root登录,命令如下

mysql.exe -uroot -proot -P3307

其中:
-uroot中的root为用户名
-proot中的root为密码
-P3307中的3307为mysql端口

用户通过命令行进入到mysql后,可用命令来创建数据库,并导入sql文件,这里不做详细说明,具体可搜索查看mysql的命令操作

2.3 tomcat

apache-tomcat-8.5.34-windows-x64.zip解压到myserver目录中,得到myserver\apache-tomcat-8.5.34

2.3.1 server.xml

修改tomcat的配置文件myserver\apache-tomcat-8.5.34\conf\server.xml
server.xml的部分内容如下:

<!--如果8005端口被占用,则需要将8005修改成其他-->
<Server port="8005" shutdown="SHUTDOWN">

    <!--如果8080端口被占用,则需要将8080修改成其他-->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--以下用AJP协议的时候才用到,没用的话可直接注释掉-->
    <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
    <!--省略不显示-->
    
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
			   
		<Context path="/helloworld" docBase="../../app/helloworld" />

      </Host>

</Server>

以上主要是在Host节点中添加了<Context path="/helloworld" docBase="../../app/helloword" />,如果有端口被占用,需要在配置文件中做相应修改。

2.3.2 catalina.bat

修改myserver\apache-tomcat-8.5.34\bin\catalina.bat
catalina.bat的部分内容如下:

rem                   Example (all one line)
rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
rem ---------------------------------------------------------------------------

set JAVA_HOME=../../jdk1.8.0_20

setlocal

以上主要添加了set JAVA_HOME=../../jdk1.8.0_20用于设置JAVA_HOME

2.4 start.bat

myserver的目录下创建start.bat批处理文件,具体内容如下:

@echo off

echo 关闭端口3307

for /f "tokens=5" %%i in ('netstat -aon ^| findstr ":3307"') do (
  echo %%i
  if not "%%i"=="" (
    taskkill /f /pid %%i
  )
)

cd mysql-5.7.21-winx64
cd bin

echo 启动mysql
start mysqld.exe --defaults-file=../my.ini &

cd ..
cd ..

REM set JAVA_HOME=jdk1.8.0_20
REM echo %PATH%

echo 启动tomcat
cd apache-tomcat-8.5.34
cd bin
call startup.bat

echo 5秒后自动关闭窗口
ping 127.1 -n 5 >nul

对以上内容大概解释下:

for /f "tokens=5" %%i in ('netstat -aon ^| findstr ":3307"') do (
  echo %%i
  if not "%%i"=="" (
    taskkill /f /pid %%i
  )
)

以上内容主要是为了查找占用3307端口的进程,然后杀死这个进程。由于mysql占用了3307端口,防止端口被占用而无法启动mysql,如果mysql不是3307的端口,那么将以上的3307改成实际的mysql端口。

剩下的应该可以看得懂,这里就不做解释了。

3 启动

双击start.bat即可启动,然后在浏览器上输入地址:http://localhost:8080/helloworld即可访问
这样如果需要在其他机子上运行的话,直接把myserver整个配置好的环境拷贝过去即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值