我需要帮助一个问题,我遇到了包装我的程序与JPackage。该程序是在Eclipse中创建的非模块化JavaFX应用程序。在Eclipse中,应用程序可以精确地编译和运行。但当我使用命令提示符进行编译和运行时,编译工作了,但应用程序不再运行了。我得到以下错误消息:
javac--module-path%path_to_fx%--add-modules javafx.controls,javafx.fxml-d out@sources.txt
java--module-path%path_to_fx%--add-modules javafx.controls,javafx.fxml-cp out application.main(此处出现错误)
jar--create--file=libs/sample1.jar--main-class=application.main-c out。
谢谢你的提示。我仔细阅读了与链接一起给出的手册。现在我明白我的代码可能有问题。之前我认为jpackage和命令提示符中的命令有问题。同时,我重新编写了代码,并用URL类替换了文件类。但我还是得到了一个类似的错误。因此,我编写了一个新的(简单的)代码来再现错误。
package application;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,600,500);
URL urlImage = getClass().getResource("image.jpg");
Image image = new Image(urlImage.toExternalForm(), 600, 400, true, true);
ImageView imageView = new ImageView(image);
root.setCenter(imageView);
Label headline = new Label("Example Image");
URL urlStyles = getClass().getResource("styles.css");
headline.getStylesheets().add(urlStyles.toExternalForm());
root.setTop(headline);
Button button = new Button();
URL urlFile = getClass().getResource("text.txt");
String temp = urlFile.toString().replaceFirst("file:/", "");
button.setText(read(temp));
root.setBottom(button);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
public String read (String file) throws IOException {
FileReader fileReader = new FileReader(file);
BufferedReader in = new BufferedReader(fileReader);
try {
String str = in.readLine();
in.close();
return str;
} catch(IOException e) {
e.printStackTrace();
return "Error";
}
}
}
在使用命令提示符进行编译时,我仍然得到一个错误:
java.lang.NullPointerException:无法调用“java.net.url.ToExternalForm()”,因为“”在application.main.start(main.java:25)在javafx.graphics/com.sun.javafx.application.launcherimpl.lambda$launchapplication1$9(launcherimpl.java:846)在javafx.graphics/com.sun.javafx.application.platformimpl.lambda$runandwait$12(platformimpl.java:455)在(accessController.java:391)在javafx.graphics/com.sun.javafx.application.platformimpl.lambda$runlater$11(platformimpl.java:427)在javafx.graphics/com.sun.glass.ui.invokelaterdispatcher$future.run(invokelaterdispatcher.java:96)在javafx.graphics/com.sun.glass.ui.win.winapplication._runloop(本机方法)在javafx.graphics/com.sun.glass.ui.win.winapplication.lambda$runloop$3(winapplication.java:174)在
如果我尝试加载图像(代码中的第一段)、css(第二段)或txt文件(最后一段),这并不重要。所有这些文件(image、css、txt)与main类一样都在同一个目录中。
也许我错过了树木中的森林,但我认为我使用了URL类,就像指南解释的那样。我在下面听取进一步的建议。谢谢你!
我正在构建Mac(10.10.5)安装程序与install4j和捆绑JRE选项在媒体步骤。 在创建安装程序后,当我安装我的应用程序时,在应用程序文件夹中没有生成JRE文件夹。我怎么才能拿到这个?
我已经用JavaFX创建了我的应用程序。一切都很好,所以我使用Jpackage在Windows中制作了一个可安装的应用程序版本。 在我安装包之后,Windows计算机仍然要求安装JVM。 我的期望是,我可以使用Jpackage在任何计算机上安装我的JavaFX应用程序,并自动设置JVM。。用户只需点击图标并运行应用程序。 关于Jpackage中的正确命令的任何建议,以将我的JavaFX应用程序ja
想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我正在开发一个javafx应用程序。此应用程序与设备通信,因此设备JAR不是模块化的,它们附带一些添加到开发中的dll文件。现在,它在Netbeans 12.6上运行得很好,但在我使用jdk-17 jpackage创建安装程序时就不是了。我相信我遗漏了一些东西,但由于我对这个jpackage还很陌生,所以我不知道如何解决它。以下是
以前我使用Izpack安装我的Java应用程序,当用户想要安装新版本时,他们只需重新安装到相同的位置(c“/Program files/jthink/jaikoz”),这将用较新的文件替换较旧的文件,用户不需要先卸载旧版本。 我现在已经为应用程序的最新版本构建了一个使用JPackage(现在是Java,JDK14的一部分)的安装程序,这将继续安装到相同的位置。问题是因为JPackage强制了一个新
问题内容: 文件孔是文件中的空白空间,但是不占用任何磁盘空间,并且包含空字节。因此,文件大小大于其在磁盘上的实际大小。 但是,我不知道如何创建带有文件孔的文件进行试验。 问题答案: 将命令与参数一起使用。 这会为您创建一个从字节8192到字节28671的漏洞。 这是一个示例,说明该文件确实存在漏洞(该命令告诉您文件正在使用多少磁盘块): 如您所见,带孔的文件尽管大小相同,但占用的磁盘块较少。 如果
我使用jpack打包了我的java应用程序。当我使用打包的安装程序安装它时,安装后的目录始终是