【发布时间】:2016-03-18 14:50:53
【问题描述】:
我想指出的第一件事是我不使用 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 cfm LispDefs.jar Manifest.txt LispDefs/*.class 将其包含在我的 jar 文件中,如他们的教程中所示。
文件创建成功,但它仍然给我消息。但是,当我编译没有包头的文件并单独使用 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 移植这个概念。
【问题讨论】:
-
你告诉你如何尝试和运行生成的 jar,而不是你如何实际尝试和编译这些东西;显示完整过程
-
奇怪的代码。您可以极大地简化这些方法。您需要发布您的 Manifest 文件和 JAR 文件列表。
-
具体来说,
lChar()中的第二个if和rChar()中的ifs都可以去掉。 -
@MarquisofLorne 我无法再访问此代码,但当时并没有什么比这更多的了。所以,我可能会在某个时候重振这个项目,并将这篇文章作为所用代码的基础。我意识到这有点奇怪。我在一个奇怪的固执时期写了它,当时我有一种特定的做事方式,基本上试图直接模仿汇编和 LISP 等语言,并在现代语言中使用它们时将编码约定抛在一边。因此,多个 if 语句在模仿数字电子设备中的 AND/OR 方式,我讨厌 try/catch。
标签: java jar packages main javac