当前位置: 首页 > 工具软件 > cp-class > 使用案例 >

java -jar 与java -cp使用

壤驷心思
2023-12-01

java 两种启动java程序的方法:java -jar启动java程序 和 java -cp 启动java程序

java -jar: 

默认情况下,Spring Boot 可执行主类是通过查找具有 public static void main(String[]) 任务类路径目录中的方法。

如果您正在使用 spring-boot-starter-parent,我们可以通过覆盖 start-class 财产在 pom.xml.例如,要命名主类,请在您的 pom.xml:

1

2

3

<properties>

    <start-class>com.mycorp.starter.HelloWorldApplication</start-class>

</properties>


如果您不使用 spring-boot-starter-parent,那么您可以应用 start-class 财产给 mainClass 的配置参数 spring-boot-maven-plugin.

1

2

3

4

5

6

7

8

9

10

11

<build>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

            <configuration>

                <mainClass>myPackage.HelloWorld</mainClass>

            </configuration>

        </plugin>

    </plugins>

</build>


java -cp xxx java_class

-cp == -classpath即指定路径加入classpath里,以便java能从classpath里找到想要运行的类

当运行java -cp xxx.jar com.yyy 时, 常遇到的问题是“错误: 找不到或无法加载主类”

主要原因就是在指定的classpath里面, 找不到要运行的java类。但是你要运行的类确实已经打到jar里面了的呀。

对于某个x.y.z.HelloJava的类, 在用java运行时, 查找的路径是x/y/z/HelloJava.class

怎么验证呢?可以使用jar xvf xxx.jar将jar解压缩,看看得到的目录结果是不是你所指定的com/yyy(对应com.yyy)的结果,尤其是使用"spring-boot-maven-plugin" build plugin打的jar, 实际的路径是“BOOT-INF/classes/com/yyy”,可以看到二者的路径是不同的,所以会报“找不到或无法加载主类”的错误。

此时, 使用 java -cp BOOT-INF/classes/ com.yyy 就可以正常运行java类了。

 类似资料: