我必须创建一个JAR文件(不使用任何IDE)
这就是我正在做的事情:
我有一个名为Project的文件夹,这是主文件夹,在这个文件夹中我有两个文件夹和一个pdf文件。
一个名为 ClassFiles ,其中包含我项目的所有“.class”文件
另一个名为 JavaFiles 的文件包含所有“.java”文件。
该文件是我必须包含的关系,虽然没有任何相关性,并且被称为Info.pdf。
我遇到的错误是:
我的主要课程(多余,我的意思是起始课程,“public static void main(String [] args)”)被称为 Main
我正在使用的命令行是:
jar -cfe Project.jar ClassFiles.Main JavaFiles ClassFiles INFO.pdf
我收到错误Could not find the main class: ClassFiles.Main. Program will exit
PS:在ClassFiles文件夹中,我有很多classname $ 1,classname $ 2文件。我不知道它是否相关。我甚至有 Main 和另一个 Main $ 1 。
明天我需要给这个JAR,所以我非常绝望。
提前谢谢!
Exception in thread "main" java.lang.NoClassDefFoundError: ClassFiles/Main (wrong name: Main)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: ClassFiles.Main. Program will exit
@erikson: ClassFiles只是我用来包含所有.class的文件夹,仅此而已...我所做的没有包(当我使用Eclipse时它是默认的)
@戴夫牛顿:对不起,(首先,谢谢你),你可以更具体一点吗?我不明白我应该做什么。我对这些东西并不是很好
啊,如果你的意思是这个包不叫Project,但是Progetto只是因为我用英语翻译它。不确定这是否也是你所指的。
我有ClassFiles目录中的Main.class和JavaFiles目录中的Main.java
这正是我所做的和结果:
ascal @ AscaL~ / Desktop / Progetto $ jar -cfe Progetto.jar ClassFiles.Main ClassFiles JavaFiles Info.pdf
ascal @ AscaL~ / Desktop / Progetto $ java -jar Progetto.jar
线程“main”中的异常java.lang.NoClassDefFoundError:ClassFiles / Main(错误的名称:Main) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access $ 000(URLClassLoader.java:73) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:294) 在java.lang.ClassLoader.loadClass(ClassLoader.java:266)
无法找到主类:ClassFiles.Main。程序将退出。
// Main.java代码
答案 0 :(得分:3)
运行jar
命令时出现错误?对我来说很好。
$ tree
.
├── ClassFiles
│ └── Main.class
├── JavaFiles
│ └── Main.java
└── Project.jar
$ jar -cfe Project.jar ClassFiles.Main JavaFiles ClassFiles
$ jar -tf Project.jar
META-INF/
META-INF/MANIFEST.MF
JavaFiles/
JavaFiles/Main.java
ClassFiles/
ClassFiles/Main.class
当然,如果您通过java -jar Project.jar
运行它,并且Main类不在ClassFiles包中,它将会中断。什么包是Main类?
$ cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.6.0_26 (Apple Inc.)
Main-Class: ClassFiles.Main
答案 1 :(得分:1)
在包含以下内容的基本文件夹中创建清单文件:
Manifest-Version: 1.0
Main-Class: ClassFiles.Main
然后运行:
jar cvfm Project.jar manifestFile.txt ClassFiles/*
希望有所帮助:)
答案 2 :(得分:0)
要运行jar文件,您应该使用Java Sun Developing Basics website中指定的指示。