gpt4 book ai didi

java - 为什么 getPackage().getSpecificationVersion() 在命令行中返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:26 25 4
gpt4 key购买 nike

我编写了一个程序来获取软件包的版本号。并且在 Intellij 中运行良好。但是当我在命令行中运行这个jar文件时,返回值为null。

我的maven项目

  <groupId>com.client.version</groupId>
<artifactId>version-specification</artifactId>
<version>1.0</version>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Build-Number>${project.version}</Build-Number>
<Timestamp>yyyy-MM-dd HH:mm:ss</Timestamp>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>

该项目只包含一个类:获取版本号

package com.client.version;

public class ClientVersion {
public ClientVersion() {
}

public static String getCurrentVersion() {
return ClientVersion.class.getPackage().getSpecificationVersion();
}
}

我创建了另一个项目

  <groupId>com.client.test</groupId>
<artifactId>test-version</artifactId>
<version>1.0-SNAPSHOT</version>


<dependencies>
<dependency>
<groupId>com.client.version</groupId>
<artifactId>version-specification</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>

并调用了getCurrentVersion方法。

public class test {

public static void main(String[] args) {
System.out.println(ClientVersion.getCurrentVersion());
}
}

当我在 IntelliJ 中运行该程序时,输出为 1.0。但是当我打包一个jar文件并在命令行中运行这个main方法时java -cp target/test-version-1.0-SNAPSHOT.jar test.test,输出为null,为什么?。

最佳答案

这是由于类加载器而发生的。 Intellij 以打包状态运行所有内容。在另一种情况下,您打包了文件,然后想要获取一些没有类路径的信息,因此您得到 null。

关于java - 为什么 getPackage().getSpecificationVersion() 在命令行中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com