尝试运行可执行 jar 文件时出现“未知选项 -jar”

问题描述 投票:0回答:1

最近,我一直在开发一个使用 GTK4 的小型 GUI 应用程序。这个 gui 应用程序使用 Java 和 Rust 的组合(我使用 jni crate 进行互操作)。

我正在使用 Rust 中的 Gtk-rs 箱创建 Gui 窗口。我有使用 JNI 调用 Rust 的 Java 代码。

编译过程非常顺利,我从 Rust 端生成一个动态库 (.so) 并将其加载到 Java 中,编译 Java 文件并创建可执行的 Java 存档。本机库是动态链接的。

但是,当我执行存档时,我收到了这个奇怪的消息:

“未知选项-jar”

什么也没有发生。

我用来执行jar文件的命令是:java -jar test.jar

我已经检查了 jar 的清单和其他所有内容,但它似乎不起作用。

我使用的是 Ubuntu,并且我获得了 GraalVM 社区版 v21.0.2 和 Rust 编译器版本 1.83。

我尝试直接按原样运行类文件而不制作jar文件,但由于某种原因主类无法加载。我还尝试使用不同的 java 编译器和运行时,但所有这些都得到相同的输出。

对此提供一些帮助会很好。

java rust java-native-interface executable-jar gtk4
1个回答
0
投票

这实际上是GApplication

GtkApplication
的超类)的
默认行为:

GApplication 以对大多数人来说合理的方式处理参数 应用:

  • 不带命令行参数的调用会导致应用程序被激活(即:发出“激活”信号或 您的“激活”方法被调用) 在命令行上调用一个或多个文件名或 URI 将导致发出“open”信号(或“open”方法) 被叫)

  • 如果 --gapplication-service 作为唯一的命令行参数给出,GApplication 将设置 G_APPLICATION_IS_SERVICE 标志并 在服务模式下运行。请参阅 HowDoI/DBusApplicationLaunching 相关信息。

  • 如果应用程序启用它,--gapplication-app-id可用于覆盖应用程序id

  • 如果使用 GtkApplication 那么 Gtk 特定的命令行参数将以通常的方式处理

  • --支持帮助

  • 所有其他命令行标志都被拒绝

您可以通过告诉 Gtk(Glib,真的)您的应用程序将进行自己的处理来禁用此默认处理:

let app = Application::builder()
    .application_id(&format!("ix.radon.guiframe.{}", &name))
    .flags(ApplicationFlags::HANDLES_COMMAND_LINE) // <-- add this line
    .build();
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.