zoukankan      html  css  js  c++  java
  • java -cp与java -jar


    java -cp与java -jar


    java -cp(或java -classpath)

    指定执行运行依赖jar和主类,需要绝对路径。指定多个jar时,linux用“:”分隔,windows“;”分隔。也可以用全称-classpath。支持通配符 “ * ”。java -cp classpath,-cp后面是类路径,解释器会到指定路径下查找class文件。
    格式 java -cp .;myClass.jar packagename.mainclassname
    例如
    java -cp .;c:/classes/myClass.jar;d:/classes/*.jar packagename.mainclassname
    java -cp D:sparkspark-2.3.3assembly argetscala-2.11jars* org.apache.spark.deploy.master.Master
    classpath中的jar文件可以使用通配符。
    packagename.mainclassname为包含mian方法的完全限定类名,如果classpath中有多个具有main方法的类,通过-cp可以方便的选定程序的入口。
    使用-jar选项,java.exe会忽略-cp、-classpath以及环境变量CLASSPATH的参数。

    java -jar

    指定运行的jar,会用到打包时的生成的META-INF下的MANIFEST.MF文件,其中Main-Class指定了主类。不能再指定其他依赖jar。ava -jar myClass.jar,执行该命令时,会用到目录META-INFMANIFEST.MF文件,在该文件中,有一个叫Main-Class的参数,它说明了java -jar命令执行的类。
    格式 java -jar myClass.jar
    例如
    java -jar myClass.jar
    java -jar E:workspaceidmapping argetidmapping-1.0-SNAPSHOT.jar


    指定main-class的两种方式

    1. Maven打包时在pom.xml的build中指定main-class
    2. 在META-INFMANIFEST.MF文件中指定
    • pom.xml的build配置
        <build>
            <!--<finalName>test-1.0-SNAPSHOT</finalName>-->
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                            <mainClass>packagename.mainclassname</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
                    <executions>
                        <execution>
                            <id>make-assemble</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    • META-INFMANIFEST.MF文件中指定:
    Manifest-Version: 1.0
    Main-Class: packagename.mainclassname
    

    用maven导出的包中,如果没有在pom文件中将依赖包打进去,是没有依赖包。
    1.打包时指定了主类,可以直接用java -jar xxx.jar。
    2.打包是没有指定主类,可以用java -cp xxx.jar 主类名称(绝对路径)。
    3.要引用其他的jar包,可以用java -classpath $CLASSPATH:xxxx.jar 主类名称(绝对路径)。其中 -classpath 指定需要引入的类。


    参考

  • 相关阅读:
    Moodle的安装和登陆(使用Https)
    Moodle 3.4中添加小组、大组、群
    【转】moodle中年级、班级、小组研讨
    函数式接口
    java实现数据库连接池
    转载---jboss简单使用
    转载---数据库优化方案
    转载---虚拟机类加载机制
    java中的hashcode
    父子类静态代码块,非静态代码块,有参,无参构造方法等的执行顺序问题
  • 原文地址:https://www.cnblogs.com/hai-feng/p/12355235.html
Copyright © 2011-2022 走看看