【问题标题】:Error: Could not find or load main class - .jar file execution错误:无法找到或加载主类 - .jar 文件执行
【发布时间】:2019-02-12 21:57:48
【问题描述】:

我一直在挖掘和挖掘,尽我所能解决这个问题,但似乎没有任何效果。我刚刚在我的机器上安装了 Intellij IDEA 并创建了一个新的 maven 项目。我只是试图执行一个 hello world 程序来验证一切设置是否正确。但是,有些不对劲。

在 IDEA 中运行应用程序时,我按预期收到“Hello World”。但是,在运行 maven 包并生成 .jar 文件时,当我尝试执行该 .jar 文件时,会收到以下消息:

C:\dev\lwjglplayground\target>java lwjgl-playground-1.0-SNAPSHOT.jar
Error: Could not find or load main class lwjgl-playground-1.0-SNAPSHOT.jar
Caused by: java.lang.ClassNotFoundException: lwjgl-playground-1.0-SNAPSHOT.jar

我的第一直觉是我在我的 java 安装中搞砸了一些东西(在安装 IDEA 之前,我删除了我的 java 8 jdk 并安装了 jdk 11),但我验证了我之前构建的其他 .jar 文件按预期执行.

我的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>whitwhoa</groupId>
    <artifactId>lwjgl-playground</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <start-class>whitwhoa.Main</start-class>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                    <archive>
                        <index>true</index>
                        <manifest>
                            <mainClass>whitwhoa.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <archive>
                        <index>true</index>
                        <manifest>
                            <mainClass>whitwhoa.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

这是我的Main.java 文件:

package whitwhoa;


public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World");
    }

}

这里是否有任何人认为配置错误?我错过了什么吗?

【问题讨论】:

    标签: java maven jar executable executable-jar


    【解决方案1】:

    -jar 参数作为命令行参数传递:

    java -jar lwjgl-playground-1.0-SNAPSHOT.jar
    

    【讨论】:

    • 你在开玩笑吧!那肯定会照顾它。你会知道为什么我拥有的其他 .jar 文件不需要这个吗?有什么我可以添加到 maven 构建过程中的东西,可以在不严格添加此标志的情况下执行吗?
    • 我不太确定,我在启动jar文件时总是使用-jar?我不知道你可以打电话给java &lt;jar&gt;——如果其他人可以回答这个问题,请随时更新我的​​答案,说明为什么这个-jar参数是明确需要的
    • 嗯...结果是双击时执行.jar。但是,没有打开命令行来显示“Hello World”文本(或者打开和关闭的速度太快以至于看不到)。我有一种预感,这就是正在发生的事情,所以我更新了主函数以将文件保存到 .jar 所在的目录中……双击……这是我的文件。对于我可能造成的任何混乱,我们深表歉意。
    猜你喜欢
    • 2018-12-16
    • 2020-06-02
    • 1970-01-01
    • 2015-07-27
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多