好吧,所以我正在为一个小游戏的客户端制作一个 .jar,我知道如何使用所有内容,并且以前在 Windows 上做过这个,现在我在 Mac 上。这应该没有什么区别,但如果你想知道,那就去吧。
现在,我在 eclipse 中有一个名为 client 的文件夹,现在通常 client.java 是主类,但还有另一个名为 EGUI,它具有“public static void main(String[] args)”,但在我的client.java 文件中,它还有一个这样的方法:
public static final void main(String args[])
{
try
{
anInt957 = 0;
anInt958 = 0;
method52(false);//highmem
aBoolean959 = true;//members
signlink.storeid = 32;
signlink.startpriv(InetAddress.getLocalHost());
client client1 = new client();
client1.method1(503, false, 765);
setserver(args[0], "5555");
return;
}
catch(Exception exception)
{
return;
}
}
我想我的问题是,“final”是否使其成为主文件?或者它仍然是 EGUI,如下所示:
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class EGUI
{
public static void main(String args[])
{
client.main(new String[] {
"127.0.0.1", "127.0.0.1", "127.0.0.1"
});
}
}
所以,我要问的是,为什么当我将主文件设置为 EGUI 时,它不起作用?小程序打开,但每次我都会收到“连接到服务器时出错”消息,当我通过复制 run.bat 信息并粘贴该信息通过终端运行它时,它运行得很好!非常感谢任何帮助!
最佳答案
public static void main(String args[])
表示您可以从命令行执行该类。 final 关键字表示该方法不能被子类覆盖。
在您的情况下,这不会使其成为 jar 的主要执行类。主类设置在META-INF/MANIFEST.MF中。通常它应该有一行:
Main-Class: classname
但是接下来是实际的类(class)。
因此,使用 zip 程序打开 jar,并检查 MANIFEST.MF。
您的client.java有一个main方法,我想是出于测试目的。
关于java - Jar Maker——哪个是主要类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14086613/