[英]Create .jar File
所以我在創建 working.jar 文件時遇到了問題。 我最初的目標是創建應用程序,一個簡單的應用程序,幾乎沒有任何功能,您只需單擊並啟動,無需 ide 或控制台。 比如記事本。 但這就是問題開始的地方。 我以為我可以創建 .jar 文件,然后將 an.exe 輸出並進行測試。 但這些似乎都不起作用。 這是我編譯的源文件。class 然后制作了一個.jar 文件:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.*;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class GuiScreenLink extends Frame implements ActionListener
{
Button OpenLink, TakeScreenshot;
Desktop desktop;
URI link;
BufferedImage img;
Robot robot;
File newFile;
public GuiScreenLink()
{
setLayout(new FlowLayout());
OpenLink = new Button("OpenLink");
TakeScreenshot = new Button("TakeScreenshot");
OpenLink.setBackground(Color.WHITE);
TakeScreenshot.setBackground(Color.WHITE);
add(OpenLink);
add(TakeScreenshot);
try {
link = new URI("https://www.google.com/");
} catch (URISyntaxException ex) {
Logger.getLogger(GuiScreenLink.class.getName()).log(Level.SEVERE, null, ex);
}
OpenLink.addActionListener(this);
TakeScreenshot.addActionListener(this);
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
/**
*
* @param ae
*/
@Override
public void actionPerformed(ActionEvent ae)
{
String str = ae.getActionCommand();
if(str.equals("OpenLink"))
{
desktop = Desktop.getDesktop();
try {
desktop.browse(link);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
else if(str.equals("TakeScreenshot"))
{
try
{
robot = new Robot();
} catch (AWTException e) {
throw new RuntimeException(e);
}
img = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
newFile = new File("Screenshot");
try
{
ImageIO.write(img,"png", newFile);
} catch (IOException e)
{
throw new RuntimeException(e);
}
}
repaint();
}
public static void main(String[] args)
{
GuiScreenLink app = new GuiScreenLink();
app.setSize(new Dimension(200,200));
app.setTitle("Keys");
app.setBackground(Color.DARK_GRAY);
app.setVisible(true);
}
}
然后我這樣做了:
javac *.java
jar -cfv program.jar *.class
因此,在我嘗試執行 .jar 文件之后,什么也沒有發生。 但是在 IDE 中一切正常。 這個問題有什么解決辦法嗎? 如果有的話,我以后如何制作一個.exe文件以在windows上啟動它?
首先,JAR 永遠無法單獨執行,但需要 Java 運行時環境。 直到 Java 8 分發了一個 JRE。 用戶安裝了它,從那時起,他們可以通過雙擊 Windows 上的 JAR 文件來啟動“可執行 JAR”。
“可執行 JAR”必須在其清單中指定主要的 class,如Java 教程中所示。
在較新版本的 Java 中,您可以創建一個模塊並使用該模塊使用名為jlink
的工具創建自定義運行時映像(參見例如https://www.baeldung.com/jlink )。 如果需要, jlink
還會創建啟動器。
使用jpackage
您可以創建本機圖像(段https://www.baeldung.com/java14-jpackage )。
要使用 -jar 參數執行 jar 文件,您必須將清單添加到 jar 文件中,至少指定包含 main 方法的 class。
為此,您可以簡單地將-e=CLASSNAME
或 --main --main-class=CLASSNAME
到jar
的調用中。
您可以在 oracle 文檔頁面的Java® 開發工具包版本 17 工具規范中找到 jar 工具的完整描述。
但我寧願建議您開始使用像Apache Maven這樣的構建工具,它將為您處理依賴關系、構建和打包(= 創建 jar 文件)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.