Maven的新手,我試圖使用maven-shade-plugin編譯Maven項目(因爲它似乎是構建胖罐子的最佳插件那裏)。我試圖指定我的主類來創建一個可運行jar文件和一些包含轉換字符串的.properties文件。Maven:使用指定主類和屬性文件的陰影插件編譯項目
編譯和構建似乎過去了,根據netbeans的輸出,但如下(假設Maven的生成JAR更名爲「方案」),我無法運行它:
/usr/bin/java -cp program.jar bot.Main
> could not find or load main class bot.Main
這是我的項目文件結構:
,這是我的pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>mavenproject1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>bot.Main</mainClass>
</manifest>
</archive>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>launcher</shadedClassifierName>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>bot.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>2.4.0</version>
<classifier>jar-with-dependencies</classifier>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
資源是否正確包含,爲什麼我無法使用java -jar命令運行我的程序而未指定主類?它說我「無效或損壞的jar文件」,這應該表示不可運行。
另外,爲什麼既不開始指定主類路徑?
謝謝!但是當我嘗試啓動它時,我'無法訪問jarfile'錯誤。這是否仍然與陰影插件設置有關? – A7X
@ A7X聽起來你沒有在正確的位置運行'java -jar'命令。 JAR不在您啓動它的目錄中。如果您在項目中,它位於'target'文件夾內,而不是根文件夾。儘管這與Shade插件無關。 – Tunaki
是的,這是我的錯。順便說一下,我仍然得到MissingResourceBundleException無法找到資源。字符串語言環境en_US的包。我使用'ResourceBundle.getBundle(「resources.strings」,新的Locale(「en」,「US」),loader)將它們包含在我的項目中;'是否因爲我將錯誤的文件路徑傳遞給資源?它應該是完整路徑嗎? – A7X