eclipse导出maven工程的可执行jar包 (4)

eclipse导出maven工程的可执行jar包

注意:如果 Launch Configuration:下面没有工程对应的main方法所在的类或者什么都没有,说明该类没有在eclipse中执行过,只需要将该类执行一次即可;

          如果 Launch Configuration:下面的类太多了,可以将其清空,方法为删除当前workspace对应的目录下的 .metadata\.plugins\org.eclipse.debug.core\.launches 目录下的内             容,注意是删除workspace对应的目录下的 .metadata\.plugins\org.eclipse.debug.core\.launches 目录下的内容,不是删除该目录

二、在Windows系统下执行可执行jar包

打开cmd命令行窗口,切换到导出的可执行jar包所在的目录,执行命令  java -jar xxx.jar [arg0] [arg1] [...]

其中 xxx.jar 是可执行jar包的名字,后面可传入零或多个参数

三、在Linux系统下执行可执行jar包(亦可叫做启动或停止java应用程序)

1、检查jdk是否已经安装在Ubuntu上

打开终端,使用下面的命令:java -versio

如果你看到像下面的输出,这就意味着你并没有安装过Jdk:

The program ‘java’ can be found in the following packages: *default-jre * gcj-4.6-jre-headless * openjdk-6-jre-headless * gcj-4.5-jre-headless * openjdk-7-jre-headless Try: sudo apt-get install

2、在Ubuntu上安装jdk

(1)下载jdk-8u161-linux-x64.tar.gz,直接用鼠标拖放到Ubuntu的桌面文件夹里,然后复制到在/usr/soft(如果没有请新建)目录下,解压后删除jdk-8u161-linux-x64.tar.gz

(2)配置java环境变量,配置在/etc/environment文件中

执行命令 gedit /etc/environment 打开/etc/environment文件的编辑窗口,配置JAVA_HOME,CLASSPATH和PATH,如下

JAVA_HOME="/usr/soft/jdk1.8.0_161"
CLASSPATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin:$HADOOP_INSTALL/bin"

(3)保存后执行 source  /etc/environment 使其立即生效,执行 java -version 命令检查配置是否成功

3、执行可执行jar包

将可执行jar包拖放到某个目录,然后切换到该目录,直接执行命令  java -jar xxx.jar [arg0] [arg1] [...]

其中 xxx.jar 是可执行jar包的名字,后面可传入零或多个参数,也可编写启动停止的shell脚本,如下是一个通用shell脚本

#!/bin/sh

#JDK所在目录
JAVA_HOME="/usr/soft/jdk1.8.0_161"


#执行程序启动所使用的系统用户,考虑到安全,不推荐使用root用户
RUNNING_USER=root


#Java程序所在的目录(classes的上一级目录)
APP_HOME=http://www.likecs.com/opt/xxx/WEB-INF


#需要启动的Java主程序(main方法所在类)
APP_MAINCLASS=com.fanghao.Main


#拼凑完整的classpath参数,包括制定lib目录下所有的jar
CLASSPATH=$APP_HOME/classes
for i in "$APP_HOME"/lib/*.jar; do
  CLASSPATH="$CLASSPATH":"$i"
done


#java虚拟机启动参数
JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"

########################################
#(函数)判断程序是否已启动
#说明:使用JDK自带的JPS命令及grep命令组合,准确查找pid
# jps加l参数,表示显示java的完整包路径
# 使用awk,分割出pid($1部分),及java程序名称($2部分)
########################################
#初始化psid变量(全局)
psid=0

checkpid() {
  javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`
  if [ -n "$javaps" ]; then
    psid=`echo $javaps | awk \'{print $1}\'`
  else
    psid=0
  fi
}

########################################
#(函数)启动程序
#说明:
#1、首先调用checkpid函数,刷新$psid全局变量
#2、如果程序已经启动($psid不等于0),则提示程序已启动
#3、如果程序没有被启动,则执行启动命令行
#4、启动命令执行后,再次调用checkpid函数
#5、如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]
#注意:echo -n 表示打印字符后,不换行
#注意:"nohup 某命令 >/dev/null 2>&1 &" 的用法
########################################
start() {
  checkpid

  if [ $psid -ne 0 ]; then
    echo "==============================="
    echo "warn: $APP_MAINCLASS already started! (pid=$psid)"
    echo "==============================="
  else
    echo -n "Starting $APP_MAINCLASS ..."
    JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 &"
    su - $RUNNING_USER -c "$JAVA_CMD"
    checkpid
    if [ $psid -ne 0 ]; then
      echo "(pid=$psid) [Successfully started]"
    else
      echo "[Failed to start]"
    fi
  fi
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdwxg.html