我已经安装了一个应用程序,当我尝试运行它时(它是一个可执行的jar)没有任何反应.当我从命令行运行它时:
java -jar"app.jar"
我收到以下消息:
"app.jar"中没有主要的清单属性
通常,如果我自己创建了程序,我会在清单文件中添加一个主类属性.但在这种情况下,由于文件来自应用程序,我不能这样做.我也尝试提取jar以查看是否可以找到主类,但是有许多类,并且它们中没有一个在其名称中包含"main"一词.必须有办法解决这个问题,因为程序在其他系统上运行正常.
我正在使用IntelliJ IDEA 12.1.3.我有一个模块,我正在尝试按照此处给出的步骤将其转换为jar .我构建了jar文件,然后将jar文件移动到D:/.如果我尝试运行此jar,我会收到以下消息:
无法从jar加载Main-Class清单属性
如果我使用java -classpath jar com.code.TestCase
它运行它完美.
为什么会这样?我使用IntelliJ IDEA创建了jar.在那个jar中,它包含了我添加的所有外部库的所有代码.
在src清单文件中:
Manifest-Version: 1.0
Main-Class: com.code.TestCase
Run Code Online (Sandbox Code Playgroud)
但是jar的清单文件内容是:
Manifest-Version: 1.0
Build-Jdk: 1.6.0
Built-By: ubuntu
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Name: org.apache.log4j
Implementation-Vendor: "Apache Software Foundation"
Implementation-Title: log4j
Implementation-Version: 1.2.15
Run Code Online (Sandbox Code Playgroud)
为什么Main-Class
没有在jar文件中添加MANIFEST.MF,但它Main-Class
在src中有?
如何在IntelliJ IDEA中向项目添加外部库,以便在构建工件时它仍然可以访问库中的类?
我从Project Structure创建了一个新的Jar工件,然后将外部JAR添加到Libraries,然后在Modules List中检查它,最后将它添加到Artifact的Output中.这些都不起作用.当我构建并尝试运行我的应用程序时,它会抛出一个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: <path of the class trying to use>
我错过了什么,或者我完全错了?
我有一个简单的例子
public class FileSystemReadFile {
public static void main(String[] args) throws IOException {
System.out.println("Reading the file" + args[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
这是在我要构建JAR文件的IntelliJ中创建的;所以我做了什么:
MANIFEST.MF
位于src\main\resources\META-INF\
该站点的此处所提到的位置。java <name>.jar
您可能会看到将主类添加到MANIFEST中,清单的位置也很好。
当我打开创建的JAR文件时,看到相同的MANIFEST内容,看到许多依赖模块,但是看不到我的类!
我怀疑是有原因的。有任何想法吗?