我要指出的第一件事是我不使用IDE。我使用Notepad ++,它有很少的帮助,我编译和运行我的所有代码从bash或DOS。在这种情况下,我尝试使用命令java -jar CharDefs.jar
将Java中的文件作为可执行jar文件运行,但它始终向我发送消息:Main method not found in LispDefs.CharDefs, please define the main method as: public static void main(String[] args).
到目前为止,我已经浏览了Oracle网站上的教程并创建了一个清单文件,方法是创建一个名为Manifest.txt
的文本文件,其中包含行Main-Class: LispDefs.CharDefs
和回车符。
我将这个包含在我的jar文件中,其命令为jar cfm LispDefs.jar Manifest.txt LispDefs/*.class
,如他们的教程所示。
文件创建成功,但它仍然给我留言。但是,当我编译没有包头的文件并单独使用java.exe运行它时,它运行成功。这是我的代码:
//package LispDefs;
public class CharDefs {
public static void main(String[] args) {
System.out.println(lChar("hello"));
System.out.println(rChar("hello"));
}
public static String cChar(String var1, String var2) {
return var1.concat(var2);
}
public static String lChar(String var1) {
if (var1.length() == 0) {
return new String();
}
if (var1.length() == 1) {
return String.valueOf(var1.charAt(0));
}
return String.valueOf(var1.charAt(0));
}
public static String rChar(String var1) {
if (var1.length() == 0) {
return new String();
}
if (var1.length() == 1) {
return new String();
}
String temp = new String();
for (int k = 1; k < var1.length(); k++) {
temp = temp.concat(String.valueOf(var1.charAt(k)));
}
return temp;
}
}
我想要做的是创建一个包含不同类的包,这些类允许不同层次的LISP样式列表解析方法,这些方法可以在不同程序中一般应用。现在,我只是试图自己测试运行它,但是它没有在jar可执行文件中识别我的主要方法。我阅读其他文章并尝试了各种各样的事情,似乎可能存在某种语义错误或者我也许没有注意到的事情。我不习惯Java,因为我将这个概念移植到python上。
答案 0 :(得分:0)
可能您的Manifest.txt
文件未以换行结束。
解决问题的另一种方法是使用该命令创建带有清单的JAR:
jar cfe jar-file main-class input-file(s)
然后会自动创建Manifest
个文件。因此,在您的情况下,此命令可能如下所示:
jar cfe LipsDefs.jar CharDefs *
或者如果你有包裹:
jar cfe LipsDefs.jar LispDefs.CharDefs LispDefs/*
您可以在此处找到更多信息https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html
答案 1 :(得分:0)
看起来你误读或掩盖了一些&#34;可执行jar&#34;是的。
首先,您有一个源目录,其中包含源文件(名称以StaggeredGridLayoutManager
结尾的文件,具有适当的目录结构;我知道您知道的很多)。
您需要做的是将源目录中的这些文件编译到目标目录(这可能是相同的);此外,在您的一个源目录中,您应该有一个名为(相对)的文件:
.java
在该文件中,有一行显示:
META-INF/MANIFEST.MF
其中:
Main-Class: relative.path.to.MyMainClass
使用原型的relative/path/to/MyMainClass.java
方法:
main
所以,基本过程是:
public static void main(String... args) // or String[] args
文件的位置; .java
); 总而言之,构建目录的内容应为:
你应该能够制作一个&#34;可执行的jar&#34;出来的。
当然,如果你有外部依赖,那么问题就比那复杂......