制作可执行jar文件
Making an executable jar file
这是我的程序,它运行良好,但一旦我将它放入 jar 中就无法打开。
以及将其制作成 .jar 文件的命令;
jar -cvfm chat.jar manifest.txt client.class
我的程序很好,我的清单与应该的完全一样 soooooo.....idk
求助。我制作的所有其他程序都变成了一个可用的 .jar,但不是这个。
class client {
public static Socket s;
public static JTextArea jta;
public static String server;
public static String name;
public static void main(String args[]) throws Exception {
Thread t = new Thread(new Runnable() {
public void run() {
try {
s = new Socket(server, 9000);
DataInputStream dis = new DataInputStream(s.getInputStream());
String str;
while ((str = dis.readUTF()) != null) {
jta.append(str + "\n");
}
} catch (Exception e1) {
}
}
});
JFrame j = new JFrame("Test");
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setVisible(true);
jta = new JTextArea();
JScrollPane jsp = new JScrollPane(jta);
j.add(jsp);
JTextField jtf = new JTextField();
jtf.setFont(new Font("", Font.BOLD, 14));
j.add(jtf, BorderLayout.SOUTH);
JPanel jp = new JPanel();
jp.add(new JLabel("Name:"));
JTextField jtfN = new JTextField();
jtfN.setPreferredSize(new Dimension(180, 20));
jp.add(jtfN);
jp.add(new JLabel("Server:"));
JTextField jtfS = new JTextField();
jtfS.setPreferredSize(new Dimension(180, 20));
jp.add(jtfS);
int jop = JOptionPane.showConfirmDialog(null, jp, "Enter Username and Server.", JOptionPane.OK_CANCEL_OPTION);
if (jop == 0) {
name = jtfN.getText();
server = jtfS.getText();
t.start();
}
jtf.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
try {
String data = name + ": " + jtf.getText();
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(data);
jta.append(data + "\n");
jtf.setText("");
} catch (Exception e1) {
}
}
}
});
///////////////////////
j.getContentPane().setPreferredSize(new Dimension(800, 500));
j.pack();
j.setLocationRelativeTo(null);
}
}
从 .java 文件制作 .jar 文件
- 首先确保您的文件名和您的class 名称相同。 "client.java" 其中 class 是客户端
现在创建一个 manifest.txt 文件。然后写这个
Main-Class: Your_Main_Class_name
你的情况是
Main-Class: client
现在保存文件
确保您的两个文件(.java 和 manifest.txt)在同一目录中
- 打开命令提示符
- 转到保存 .java 和 manifest.txt 文件的文件夹。使用命令
cd your_path
现在使用命令
编译你的.java文件
javac client.java
现在您在同一个文件夹中有 client.class 个文件
现在制作 .jar 文件使用这个命令
jar cfn client.jar manifest.txt client.class
现在您的 client.jar 文件已在同一目录中创建
到运行.jar文件使用这个命令
java -jar client.jar
这是我的程序,它运行良好,但一旦我将它放入 jar 中就无法打开。
以及将其制作成 .jar 文件的命令;
jar -cvfm chat.jar manifest.txt client.class
我的程序很好,我的清单与应该的完全一样 soooooo.....idk
求助。我制作的所有其他程序都变成了一个可用的 .jar,但不是这个。
class client {
public static Socket s;
public static JTextArea jta;
public static String server;
public static String name;
public static void main(String args[]) throws Exception {
Thread t = new Thread(new Runnable() {
public void run() {
try {
s = new Socket(server, 9000);
DataInputStream dis = new DataInputStream(s.getInputStream());
String str;
while ((str = dis.readUTF()) != null) {
jta.append(str + "\n");
}
} catch (Exception e1) {
}
}
});
JFrame j = new JFrame("Test");
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setVisible(true);
jta = new JTextArea();
JScrollPane jsp = new JScrollPane(jta);
j.add(jsp);
JTextField jtf = new JTextField();
jtf.setFont(new Font("", Font.BOLD, 14));
j.add(jtf, BorderLayout.SOUTH);
JPanel jp = new JPanel();
jp.add(new JLabel("Name:"));
JTextField jtfN = new JTextField();
jtfN.setPreferredSize(new Dimension(180, 20));
jp.add(jtfN);
jp.add(new JLabel("Server:"));
JTextField jtfS = new JTextField();
jtfS.setPreferredSize(new Dimension(180, 20));
jp.add(jtfS);
int jop = JOptionPane.showConfirmDialog(null, jp, "Enter Username and Server.", JOptionPane.OK_CANCEL_OPTION);
if (jop == 0) {
name = jtfN.getText();
server = jtfS.getText();
t.start();
}
jtf.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
try {
String data = name + ": " + jtf.getText();
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(data);
jta.append(data + "\n");
jtf.setText("");
} catch (Exception e1) {
}
}
}
});
///////////////////////
j.getContentPane().setPreferredSize(new Dimension(800, 500));
j.pack();
j.setLocationRelativeTo(null);
}
}
从 .java 文件制作 .jar 文件
- 首先确保您的文件名和您的class 名称相同。 "client.java" 其中 class 是客户端
现在创建一个 manifest.txt 文件。然后写这个
Main-Class: Your_Main_Class_name
你的情况是
Main-Class: client
现在保存文件
确保您的两个文件(.java 和 manifest.txt)在同一目录中
- 打开命令提示符
- 转到保存 .java 和 manifest.txt 文件的文件夹。使用命令
cd your_path
现在使用命令
编译你的.java文件javac client.java
现在您在同一个文件夹中有 client.class 个文件
现在制作 .jar 文件使用这个命令
jar cfn client.jar manifest.txt client.class
现在您的 client.jar 文件已在同一目录中创建
到运行.jar文件使用这个命令
java -jar client.jar