我正在尝试使用本指南中的代码运行 gnome 扩展 https://gjs.guide/extensions/upgrading/legacy-documentation.html#extensionUbuntu 22.04、GNOME 42.9、waylandcontents 扩展...
我正在尝试使用本指南中的代码运行 gnome 扩展 https://gjs.guide/extensions/upgrading/legacy-documentation.html#extension Ubuntu 22.04、GNOME 42.9、wayland
extension.js 的内容(从上面的链接复制):
const St = imports.gi.St;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const {
gettext: _,
} = ExtensionUtils;
class Extension {
enable() {
// Create a panel button
this._indicator = new PanelMenu.Button(0.0, Me.metadata.name, false);
// Add an icon
const icon = new St.Icon({
icon_name: 'face-laugh-symbolic',
style_class: 'system-status-icon',
});
this._indicator.add_child(icon);
// Add the indicator to the panel
Main.panel.addToStatusArea(Me.metadata.uuid, this._indicator);
// Add a menu item to open the preferences window
this._indicator.menu.addAction(_('Preferences'),
() => ExtensionUtils.openPrefs());
this._count = 0;
}
disable() {
if (this._indicator) {
this._indicator.destroy();
this._indicator = null;
}
}
}
function init() {
ExtensionUtils.initTranslations();
return new Extension();
}
metadata.json的内容:
{
"uuid": "[email protected]",
"name": "Example Extension",
"description": "An example extension",
"shell-version": [ "42.9" ],
"url": "https://gjs.guide/extensions"
}
错误:
我认为问题出在这一行:
ExecStart=/usr/lib/jvm/java-17-openjdk-amd64/bin/java
-jar /clinic/spring-petclinic/target/*.jar
(为了易读,我把它拆分了。)
让我们开始吧:
java -jar /clinic/spring-petclinic/target/*.jar
该 -jar
选项需要一个 JAR 文件。但从表面上看,它 *
可以扩展为多个 JAR 的路径名。这行不通。第二个和后续 JAR 将 作为命令行参数传递;即在 \'arg list\' 中。而且它们不会在类路径上。
此外,如果您的应用程序确实由多个 JAR 文件组成,则该 -jar
选项不是运行它的正确方法。相反,您需要指定类路径(例如使用参数 -cp
)并提供入口点类名。它看起来像这样:
java -cp /somepath/part1.jar:/somepath/part2.jar com.example.FooCommand ...
(也可以在类路径中使用通配符,但是 Java 有特定的语法来执行此操作。请查看 java
您的 Java 版本的命令手册条目。)
但实际解释比这更简单。那里的文件是 systemd 单元配置文件;请参阅 https://www.freedesktop.org/software/systemd/man/255/systemd.service.html 。手册条目解释说 ExecStart
字符串不是完整的 shell 语法。支持 shell 语法的某些方面,但 *
不支持通配符。(有关 systemd.service
详细信息,请参阅手册条目。)
因此...您 ExecStart
指定的是 *
路径名中包含文字字符的 JAR 文件。显然,它不存在; java
命令错误消息告诉您这一点。