我有一个java程序,我用maven在intellij中编写。我将它导出为jar并尝试从命令行运行,但它一直告诉我
错误:无法找到或加载主类com.company.main,原因是:java.lang.classnotfoundexception:com.company.main
然后我尝试从命令行运行程序本身,这也告诉我它找不到主类
命令行:对于jar:java-jar\u project.jar
运行程序:javacom.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的问题,我不知道。我创建了一个简单的helloworld程序,并从命令行运行了它。我这样运行它(c://etc)…/src/>javacom.company.helloworld。但是当我再次尝试这个时,它找不到主类。谢谢您
这些是我的课
编辑:我改为使用maven程序集插件,重建了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>
类结构来显示主类所在的位置
主类中的代码
public class Main {
public static void main(String[] args) throws IOException, SQLException {
System.out.println("hello");
Executor ex = new Executor();
}
}
3条答案
按热度按时间waxmsbnn1#
发件人:https://www.xspdf.com/resolution/54971948.html 要从jar文件中提取文件,请使用x,如:c:\java>jarxf myfile.jar。要从jar文件中只提取某些文件,请提供它们的配置并安装一个归档程序。jar文件就像zip文件一样工作。您可以使用任何存档程序来提取它们。2.找到要提取的jar文件。使用文件资源管理器(按win+e打开文件资源管理器)或mac上的finder 3。右键单击jar文件。这样做。如何从jar中提取清单文件。提取jar文件的内容。
cl25kdpy2#
您的错误可能是您的主类位于错误的包中。
此外,如果您有依赖项,请不要告诉您需要maven shade插件或maven assembly插件来构建可执行jar。
wqsoz72f3#
我不知道是什么问题。我试着创建一个新的程序,我复制了这些类,重新创建了pom.xml文件,我的新程序除了一个依赖项(chrome选项)外还能工作,但我不认为这是导致问题的原因。所以现在我只需要弄清楚为什么chrome选项不起作用,但是新程序的jar确实运行了。