JAR主类没找到问题

我必须创建一个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 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时它是默认的)

@Dave Newton:对不起,(首先,谢谢你),你可以更具体一点吗? 我不明白我应该做什么。 我对这些东西并不是很好

啊,如果你的意思是这个包不叫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中的exception:java的java.lang.ClassLoader.defineClass1(Native Method)中的java.lang.NoClassDefFoundError:ClassFiles / Main(错误的名称:Main),java的java.lang.ClassLoader.defineClass(ClassLoader.java:634) .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)在java.security.AccessController.doPrivileged(Native Method)java.net.URLClassLoader.findClass(URLClassLoader.java:205)java.lang.ClassLoader.loadClass(ClassLoader.java: 321)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:294)at java.lang.ClassLoader.loadClass(ClassLoader.java:266)

找不到主类:ClassFiles.Main。 程序将会退出。

// Main.java代码

http://pastebin.com/Xh9emcYH

运行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 

在基本文件夹中创建清单文件,其中包含:

 Manifest-Version: 1.0 Main-Class: ClassFiles.Main 

然后运行:

 jar cvfm Project.jar manifestFile.txt ClassFiles/* 

希望能帮助到你 :)

要运行jar文件,您应该使用Java Sun Develop Basics网站中给出的指定说明。