java以sh脚本启动jar包,但是*.jar包名作为参数
时间: 2023-09-04 07:01:19 浏览: 220
在Java中,可以使用sh脚本来启动一个jar包,并将jar包名作为参数传递给脚本。
首先,我们需要编写一个sh脚本,用于启动jar包。在脚本中,我们可以使用Java命令来运行jar包。脚本的内容可以是如下形式:
```shell
#!/bin/bash
java -jar $1
```
在这个脚本中,$1表示脚本执行时传递的第一个参数,也就是jar包的名称。使用java命令来运行jar包时,可以将jar包名作为参数传递给java命令。
假设我们将上述脚本保存为start.sh,那么可以通过以下方式来执行它,将jar包名作为参数传递给脚本:
```shell
./start.sh myapp.jar
```
这样,start.sh脚本就会以sh脚本的方式启动myapp.jar这个jar包。
当然,上述脚本只是简单示例,实际应用中可能还需要处理额外的逻辑,例如添加一些启动参数、设置环境变量等。但以上方法是启动jar包并传递jar包名作为参数的基本步骤。
相关问题
#!/bin/sh echo " =====关闭Java应用======" #######修改下面的 jar包 名######### PID=`lsof -i:6002| grep LISTEN |awk '{print $2}'` if [ $PID >> 0 ];then kill -9 $PID nohup java $JAVA_OPTS -jar -Xms1024m -Xmx2048m ./*.jar -Duser.timezone=Asia/Shanghai 2>&1 | rotatelogs /wasoft/logs/fmapp-%Y-%m-%d.out 43200 480 & else nohup java $JAVA_OPTS -jar -Xms1024m -Xmx2048m ./*.jar -Duser.timezone=Asia/Shanghai 2>&1 | rotatelogs /wasoft/logs/fmapp-%Y-%m-%d.out 43200 480 & fi tail -f log/basesc-by1.log
这段 Shell 脚本的作用是关闭一个 Java 应用,并重新启动它。具体步骤如下:
1. 首先,通过 lsof 命令找到监听在端口 6002 上的 Java 进程,并获取其进程 ID(PID)。
2. 如果 PID 大于 0,说明进程存在,使用 kill 命令强制终止该进程。
3. 然后,使用 nohup 命令启动一个新的 Java 进程,执行指定的 jar 文件,并设置 JVM 的内存参数(-Xms 和 -Xmx)以及时区参数(-Duser.timezone)。
4. 将 Java 进程的输出重定向到指定的日志文件,并使用 rotatelogs 工具按照一定时间间隔和文件大小进行日志切割。
5. 如果 PID 为 0,说明进程不存在,直接启动一个新的 Java 进程。
最后,使用 tail 命令实时查看日志文件 `log/basesc-by1.log` 的内容。
请注意,这是一段示例代码,具体使用时需要根据实际情况修改相关配置和文件路径。
sh脚本调用jar包
在sh脚本中调用jar包可以通过设置CLASSPATH环境变量来实现。可以使用以下命令设置CLASSPATH环境变量:
```
CLASSPATH=$JAVA_HOME/bin:/path/to/jar1:/path/to/jar2
```
其中,$JAVA_HOME是Java安装路径,/path/to/jar1和/path/to/jar2是需要调用的jar包路径。设置好环境变量后,可以使用java命令来执行jar包,例如:
```
java -jar /path/to/your.jar
```
另外,如果你想在脚本中使用jar包中的类,可以使用java命令来执行,例如:
```
java -cp /path/to/your.jar com.example.MainClass
```
其中,-cp参数指定了类路径,com.example.MainClass是需要执行的类名。需要注意的是,如果你的jar包依赖其他的jar包,也需要将这些jar包的路径添加到CLASSPATH环境变量中。
阅读全文