簡體   English   中英

JAR文件執行:找不到/加載主類

[英]JAR file execution: cannot find/load main class

我已經在eclipse上開發了一個maven項目,並在其上運行良好。 我想用它構建一個jar並從命令提示符下運行它。 我不想擁有所有依賴項的大罐子。 我想要一個帶有項目代碼的小jar,該項目代碼使用“ lib”文件夾作為依賴項(帶有jar文件),並使用“ resources”文件夾作為屬性文件。

我在Maven中使用的插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>${jdk.version}</source>
            <target>${jdk.version}</target>
        </configuration>

    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathLayoutType>custom</classpathLayoutType>
                    <customClasspathLayout>lib/${artifact.artifactId}${artifact.dashClassifier?}-${artifact.version}.${artifact.extension}</customClasspathLayout>
                    <mainClass>mypkg.Main</mainClass>
                </manifest>
                <manifestEntries>
                    <Class-Path>. ${project.build.directory}\resources ${project.build.directory}\lib</Class-Path>
                </manifestEntries>
            </archive>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-dependencies</id>
                <phase>package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}\lib</outputDirectory>
                    <overWriteReleases>false</overWriteReleases>
                    <overWriteSnapshots>false</overWriteSnapshots>
                    <overWriteIfNewer>true</overWriteIfNewer>
                </configuration>
            </execution>
        </executions>
    </plugin>

    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
            <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}\resources</outputDirectory>
                    <resources>
                        <resource>
                            <directory>src/main/resources</directory>
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>

我的主班:

package mypkg;

import java.io.IOException;

public class Main {

    public static void main(String[] args)
            throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException {

 .......
 .......
}
}

將使用清單文件在“ META-INF”文件夾中創建jar。 清單文件(已刪除類路徑中的一些jar條目以供查看):

Manifest-Version: 1.0
Built-By: userName
Class-Path: . D:/project2/mypkg/target/ D:/project2/mypkg/target/resources D:/project2/mypkg/target/lib lib/hive-jdbc.jar lib/hive-common.jar lib/commons-lang.jar 
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_101
Main-Class: mypkg.Main

文件夾結構:

folder-
       -lib
            -(all the jar files)
       -resources
            -(properties file)
       -application.jar

我正在命令提示符下使用'java -jar application.jar mypkg.Main'。

但顯示“錯誤:找不到或加載主類mypkg.Main”

有人可以告訴我是什么導致了錯誤,以及如何解決該錯誤?

終於找到了解決方案。 只需在清單文件中進行一些修改。 罐子的版本不見了。

最終清單文件(已刪除類路徑中的一些jar條目以供查看):

Manifest-Version: 1.0
Built-By: userName
Class-Path: lib/hive-jdbc-1.1.0.jar lib/hive-common-1.1.0.jar 
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_101
Main-Class: mypkg.Main

請注意:清單文件(Java 6及更高版本)的“ Class-Path”標頭中沒有通配符,例如“ lib / *”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM