JAR主类未找到问题 [英] JAR main class not found problem

查看:81
本文介绍了JAR主类未找到问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须创建一个JAR文件(不使用任何IDE)

I have to create a JAR file (without using any IDE)

这就是我正在做的事情:

That's what I'm doing:

我有一个名为Project的文件夹,这是主文件夹,在这个文件夹中我有两个文件夹和一个pdf文件。

I got a folder named Project, this is the main one, in this one i two folders and a pdf file.

一个名为 ClassFiles的文件

one named ClassFiles that contains all the ".class" files of my project

另一个名为 JavaFiles 的文件包含所有.java文件。

the other one named JavaFiles that contains all the ".java" files.

该文件是我必须包含的关系,虽然没有任何相关性,并且被称为Info.pdf。

the file is a relation that i have to include, nothing relevant though, and is called Info.pdf.

我遇到的错误是这样的:

The error i have is this:

我的主要类(冗余,我的意思是起始的,带有public static void main(String [] args) )被称为 Main

My main class (is redundant, i mean the starting one, with "public static void main(String[] args)") is called Main

我正在使用的命令行是:

the command line i'm using is:

jar -cfe Project.jar ClassFiles.Main JavaFiles ClassFiles INFO.pdf

我收到错误找不到主类:ClassFiles.Main。程序将退出

PS:在ClassFiles文件夹中,我有很多classname $ 1,classname $ 2文件。我不知道它是否相关。我甚至有 Main 和另一个 Main $ 1

PS: in the ClassFiles folder i have a lot of classname$1, classname$2 files. i don't know if it's relevant. I even have the Main with and another Main$1.

我明天需要给这个JAR,所以我非常绝望。

I need to give this JAR tomorrow, so i'm quite desperate.

提前谢谢!

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时它是默认的包装)

@erikson: ClassFiles is just a folder i made to contain all the .class, nothing more... there is no package in what i did (it was the default one when i used Eclipse)

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

@ Dave Newton: sorry man, (first of all thank you), could u be a little more specific? i'm not understanding what i should do. i'm not really good with this stuff

啊,如果你的意思是这个包不叫Project但是Progetto只是因为我用英语翻译它。不确定这是否也是你所指的。

ah, if you mean that the package is not called Project but Progetto is just becouse i translated it in english. not sure if that's what you are referring too.

我有ClassFiles目录中的Main.class和JavaFiles目录中的Main.java

I have the Main.class in the ClassFiles directory and Main.java in the JavaFiles dir

这正是我所做的和结果:

That's exactly what i did and the result:

ascal @ AscaL~ / Desktop / Progetto $ jar -cfe Progetto.jar ClassFiles.Main ClassFiles JavaFiles Info.pdf

ascal@AscaL ~/Desktop/Progetto $ jar -cfe Progetto.jar ClassFiles.Main ClassFiles JavaFiles Info.pdf

ascal @ AscaL~ / Desktop / Progetto $ java -jar Progetto.jar

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)
at java.net.URLClassLoader $ 1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(本地方法)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc。启动器$ AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)

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)

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

Could not find the main class: ClassFiles.Main. Program will exit.

// Main.java代码

//Code of Main.java

http://pastebin.com/Xh9emcYH

推荐答案

运行 jar 命令时出现错误?适用于我。

You get that error when you run the jar command? Works fine for me.

$ 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类?

Of course, if you run it via java -jar Project.jar, and the Main class isn't in the ClassFiles package, it'll break. What package is the Main class in?

$ cat META-INF/MANIFEST.MF 
Manifest-Version: 1.0
Created-By: 1.6.0_26 (Apple Inc.)
Main-Class: ClassFiles.Main

这篇关于JAR主类未找到问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆