错误:找不到或加载主类-.jar文件执行

3
我一直在尝试各种方法来解决这个问题,但似乎没有什么作用。我刚刚在我的电脑上安装了Intellij IDEA并创建了一个新的maven项目。我只是想执行一个hello world程序以验证所有设置是否正确。然而,有些地方不对。
在IDEA中运行应用程序时,我按预期收到了“Hello World”。但是,在运行maven package并生成.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

我的第一反应是在安装IDEA之前,我可能搞砸了Java的安装(因为我删除了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");
    }

}

有没有什么地方被配置错误了?我有什么遗漏的吗?
1个回答

2

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

最初的回答已经很清楚了,不需要进一步解释。

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

你一定是在开玩笑吧!这绝对解决了问题。你知道为什么我拥有的其他.jar文件不需要这个吗?我能否在Maven构建过程中添加一些内容,以允许执行而不严格添加此标志? - whitwhoa
我不是很确定,我总是在启动jar文件时使用“-jar”?我不知道你可以直接调用“java <jar>”--如果有人能回答这个问题,请随意更新我的答案,并解释一下为什么这个“-jar”参数明确要求。 - AK47
嗯...事实证明,当双击时确实执行了.jar文件。然而,没有打开命令行来显示“Hello World”文本(或者打开并关闭得太快以至于不可见)。我有一种预感会发生这种情况,所以我更新了主函数以保存一个文件到.jar所在的目录...双击...我的文件就在那里了。对我可能造成的任何困惑表示歉意。 - whitwhoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接