我正在尝试学习 Java,更多的是作为一种爱好而不是其他任何东西,从我通常的 C# 中采取不同的角度,在那里你实际上在一个文件中拥有命名空间和多个类(不是咆哮或任何东西)。但是,我似乎不太明白 jar 创建过程是如何工作的,至少在“文件输入”参数方面是这样。
我很清楚有像 and、maven 等构建工具。我只是想更好地了解整个过程。
我正在尝试从我的 2 个类中创建一个 jar,它们位于 2 个单独的包中。
这是文件夹结构:
tryproject\packageOne\MainApp.class
tryproject\packageTwo\Greeter.class
主应用程序
package packageOne;
import packageTwo.Greeter;
public class MainApp{
public static void main(String[] args){
Greeter greeter=new Greeter();
greeter.setMessage("Hello World");
greeter.sayHello();
}
}
问候语
package packageTwo;
public class Greeter{
private String whatTosay;
public void setMessage(String whatTosay){
this.whatTosay=whatTosay;
}
public void sayHello(){
System.out.println(whatTosay);
}
}
这是命令提示符输出:
C:\Users\SomeUser>jar cfve tryapp.jar MainApp C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class
added manifest
adding:Users/SomeUser/Desktop/LearningJava/tryproject/packageOne/MainApp.class(in = 414) (out= 299)(deflated 27%)
adding:Users/SomeUser/Desktop/LearningJava/tryproject/packageTwo/Greeter.class(in = 506) (out= 333)(deflated 34%)
C:\Users\SomeUser>java -jar tryapp.jar
Error: Could not find or load main class MainApp
Caused by: java.lang.ClassNotFoundException: MainApp
我真的不明白为什么它找不到我的MainApp班级,我也很好奇是否可以在没有预制清单的情况下以这种方式构建 jar。
慕容森
相关分类