Java常见启动命令 -jar、-server、-cp比较

这篇具有很好参考价值的文章主要介绍了Java常见启动命令 -jar、-server、-cp比较。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java程序常见启动方式

当前java程序启动主要以 -jar-server-cp等几个命令启动 jar 程序,其中我们最常用的java -jar启动方式,通常我们需要将当前工程所依赖的所有包编译到一个jar包中,随着工程不断迭代,外部依赖越来越多,会导致整个jar包体积变得很大,每次更新部署传输效率就会变得很低,这时我们就可以使用到另外两个命令来替代-jar命令,将一部分或者全部依赖拆分,更新部署时只用更新部分依赖即可

java -jar

此命令不用多说,基本所有javaer都很熟悉,也很简单
示例:
基础用法

java -jar xxxxxx.jar

依赖拆分到外部的用法,使用java -jar命令,同时需要将部分依赖包拆分到主启动程序jar包外部时,通常将jar包放置在主jar包相对目录下的一个单独的lib文件中,如下图,lib为拆分后的外部依赖放置的目录
Java常见启动命令 -jar、-server、-cp比较
如上图,原jar包大小为110m,通过将部分依赖移出到外部之后,主启动程序jar包仅5.4m,这样便于开发迭代时缩小传输体量,提高效率,这时需要使用到启动参数-Dloader.path=lib来加载主程序外部的依赖

java -Dloader.path=lib -jar xxxxxx-app.jar

java -server与-client参数

可以通过-server或-client设置jvm的运行参数。

它们的区别是Server VM的初始堆空间会大一些,默认使用的是并行垃圾回收器,启动慢运行快。
Client VM相对来讲会保守一些,初始堆空间会小一些,使用串行的垃圾回收器,它的目标是为了让JVM的启动速度更快,但运行速度会比Serverm模式慢些。

JVM在启动的时候会根据硬件和操作系统自动选择使用Server还是Client类型的 JVM。

32位操作系统
如果是Windows系统,不论硬件配置如何,都默认使用Client类型的JVM。

如果是其他操作系统上,机器配置有2GB以上的内存同时有2个以上CPU的话默认使用server模式,否则使用client模式。

64位操作系统
只有server类型,不支持client类型。

-server命令可以配合-jar命令使用,也可单独使用

java -server -Xmx1024m -Xms256m -Xmn512m -Xss256k -Dloader.path=lib -jar xxxxxx-app.jar

-server单独使用,配合-classpath加载外部依赖

maven build构建插件,maven-assembly-plugin,将所有jar构建到lib目录

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <appendAssemblyId>true</appendAssemblyId>
                <finalName>cas-service</finalName>
                <descriptors>
                    <descriptor>src/main/assembly/package.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

package.xml

<assembly xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>bin</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>/bin</outputDirectory>
            <fileMode>755</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/mybatis-mapper/*</exclude>
            </excludes>
            <outputDirectory>/conf</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
#!/bin/bash
MAIN_CLASS=com.xxx.XXXApp

source ~/.bash_profile
export PROJECT_HOME="$(
  cd "$(dirname "$0")"/..
  pwd
)"

APP_CLASS_PATH=.:$PROJECT_HOME/conf:$PROJECT_HOME/lib/*

mkdir $PROJECT_HOME/logs 2>/dev/null

(LD_LIBRARY_PATH=. java -server -Xmx256m -Xms256m -Xmn128m -Xss512k \
  -classpath $APP_CLASS_PATH $MAIN_CLASS >/dev/null 2>&1 &)

java -cp

使用-cp命令启动时,用法与-server配合-classpath使用时类似,不同的是不能与-jar命令一起使用,使用-cp命令时-jar便会失效
Java常见启动命令 -jar、-server、-cp比较

#!/bin/bash

MAIN_CLASS=com.xxx.XXXApp

source ~/.bash_profile
export PROJECT_HOME="$(
  cd "$(dirname "$0")"/..
  pwd
)"

function init_app_class_path() {
  for file in $1/*; do
    if [ -z "$APP_CLASS_PATH" ]; then
      APP_CLASS_PATH=$file
    else
      APP_CLASS_PATH=$APP_CLASS_PATH:$file
    fi
  done
}

init_app_class_path $PROJECT_HOME/lib
APP_CLASS_PATH=$PROJECT_HOME/conf:$APP_CLASS_PATH

mkdir $PROJECT_HOME/logs 2>/dev/null

(LD_LIBRARY_PATH=. java -Xmx512m -Xms256m -Xmn128m -Xss512k \
  -cp $APP_CLASS_PATH $MAIN_CLASS >/dev/null 2>&1 &)

试了一下,-cp扫描所有jar包及配置,直接使用*也是可以匹配到的,如下这种方式也是有效的文章来源地址https://www.toymoban.com/news/detail-493208.html

java -cp /data/myapp/conf:/data/myapp/lib/* com.xxx.XXXApp

到了这里,关于Java常见启动命令 -jar、-server、-cp比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java -jar 启动服务后,关闭命令窗口后服务停止

    问题:当我们用java -jar命令启动服务后,只有一直保持Xshell的窗口开启且正常连接服务器时才能访问服务,当关闭命令窗口时,服务会停止运行 解决:使用nohup命令启动服务 nohup(no hang up):不挂起 只要通过nohup命令启动服务,服务会一直运行 1.安装nohup,查询nohup是否安装

    2024年02月12日
    浏览(46)
  • windows下 java程序无窗口启动、无窗口启动java -jar

    方式一: javaw -jar yourJarFile.jar 如果在使用 javaw -jar yourJarFile.jar 启动时仍然出现了命令行窗口,这可能是由于你的 JAR 文件中存在控制台输出。即使使用 javaw 启动器,如果 JAR 文件中有输出到标准输出流(System.out)的操作,它也会弹出命令行窗口来显示这些输出 方式二: 创建

    2024年02月13日
    浏览(37)
  • springboot打包的jar,使用java -cp报错:找不到或无法加载主类

    问题 springboot打包的jar,使用java -cp报错:找不到或无法加载主类 解决办法 springboot打包的文件与一般java启动方式有一些差别 需要修改为使用以下命令,后面增加类:org.springframework.boot.loader.PropertiesLauncher,如下: java -cp .:test-0.0.1-SNAPSHOT.jar -Dloader.main=com.aa.common org.springfram

    2024年02月16日
    浏览(54)
  • 【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~

    Java的可执行命令程序 jar (Java Archive)最早作为一项功能在JDK 1.0中引入。它的 设计目的是为了方便在Java平台上进行打包、分发和部署应用程序 。 jar 文件可以将多个Java类、资源文件和其他依赖项打包成一个单独的归档文件,以实现更简单的应用程序管理和传输。 jar 文件是

    2024年02月11日
    浏览(67)
  • 启动jar修改端口server.port的方法

    以应用参数的方式 以 JDK 参数的方式 Linux: Windows: #或 #或 参数优先级 启动命令应用参数 启动命令 JDK 参数 环境变量

    2024年02月15日
    浏览(36)
  • 几种常见的 Linux 下启动 jar 包方式

    1、直接启动 jar 包 2、后台启动 jar 包 3、后台不挂断启动 4、指定日志输出的启动 5、指定配置文件启动 6、指定配置文件,使用系统默认的log配置,不另行指定日志输入 7、指定分配系统资源大小

    2024年02月16日
    浏览(46)
  • Linux下启动jar包的几种常见方式

    首先把这两个jar上传到linux ,会操作启动一个应用和同时启动多个应用 两个项目jar已上传,可去这里下载: https://download.csdn.net/download/zengzhaowu313/88411336 第一种、直接启动 jar 包  ,先启动一个应用程序 ,后面操作启动多个应用 java -jar Test001.jar # 缺点:当前 ssh 窗口会被锁定,

    2024年02月05日
    浏览(57)
  • 后端jar包部署常见运行和停止命令

    目录 一、jar包运行最佳方式:nohup的方式运行,同时输出日志: 二、停止Jar包的运行: 获取进程的方式: 杀死进程:          通过查询到的PID:          通过进程名称:

    2024年04月23日
    浏览(30)
  • linux抛弃tomcat,jar直接启动命令

    (1)查看有没有运行这个jar (2)查询java全部运行 (3)停止jar包 (4)启动jar包 (5)直接启动查看是否能启动 使用直接启动命令时,此退出直接关闭启动

    2024年02月13日
    浏览(55)
  • 【Java可执行命令】(八)JWS应用程序启动工具 javaws:深入解析Java Web Start应用程序的启动工具javaws ~

    Java Web Start(JWS) 是由Sun Microsystems(现为Oracle)开发的一种Java技术,旨在方便从Web浏览器启动和分发Java应用程序。 javaws 是 Java Web Start 工具的命令行版本。它使用 Java Network Launch Protocol (JNLP) 文件作为输入,并根据该文件描述的配置和资源来启动和运行相应的Java应用程序

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包