繁体   English   中英

从命令行运行 Java 程序/Jar

[英]Running Java program/Jar from command line

我有一个 java 程序,我使用 maven 在 intellij 中编码。 我将它导出为 jar 并尝试从命令行运行,但它一直告诉我

Error: Could not find or load main class com.company.Main Caused by: java.lang.ClassNotFoundException: com.company.Main

然后我尝试从命令行运行程序本身,这也告诉我它找不到主 class

命令行:对于 jar:java -jar selenium_project.jar

运行程序:java com.company.Main

对于 jar,我从它所在的文件夹运行它。对于程序,我从程序的根目录运行它。

Pom.xml

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <archive>
                <index>true</index>
                <manifest>
                    <mainClass>com.company.Main</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
</plugins></build>

显现:

Manifest-Version: 1.0
Main-Class: com.company.Main

这可能是 maven 的问题,我不知道。 我创建了一个简单的 hello world 程序并从命令行运行它并且它工作。 我像这样运行它 (c://etc)../src/> java com.company.HelloWorld。 但是当我再次尝试这个时,它找不到主要的 class。 谢谢

这些是我的课

编辑:我改为使用 maven-assembly-plugin 并重建了 jar 但仍然无法正常工作

<build>

<plugins>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>
                                com.company.Main
                            </mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </execution>
        </executions>
    </plugin>

</plugins></build>

class 结构显示主要 class 的位置

主代码 class

public class Main {

public static void main(String[] args) throws IOException, SQLException {
    System.out.println("hello");

    Executor ex = new Executor();

}

}

您的错误可能是您的 Main class 位于错误的 package 中。

此外,如果您有依赖项,请不要需要 Maven 阴影插件或 Maven 程序集插件来构建可执行的 jars。

我不知道问题是什么。 我尝试创建一个新程序,并复制了这些类并重新制作了 pom.xml 文件,我的新程序除了一个依赖项(chrome 选项)之外可以正常工作,但我认为这不是导致问题的原因。 所以现在我只需要弄清楚为什么 Chrome 选项不起作用,但来自新程序的实际 jar 确实运行。

From: https://www.xspdf.com/resolution/54971948.html To extract the files from a jar file, use x, as in: C:\Java> jar xf myFile.jar. 要从 jar 文件中仅提取某些文件,请提供其安装存档程序。 JAR 文件的工作方式与 ZIP 文件一样。 您可以使用任何存档程序来提取它们。 2.找到你要解压的JAR文件。 使用文件资源管理器(按 Win + E 打开文件资源管理器)或 Mac 上的 Finder 到 3. 右键单击 JAR 文件。 这样做。 如何从 jar 中提取清单文件。 提取 JAR 文件的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM