在Ubuntu上使用swing ui的Java应用程序snapscraft snap.yaml

问题描述

我有一个使用java.awt Swing UI的基本Java应用程序,我想为其创建一个管理单元,因此在安装时有可用的启动器,并且UI会启动。我使用gradle和jar任务创建了一个运行良好的jar。

自然地,我有一个类,当调用该类时,它可以很好地加载我的应用程序:

    package com.foo
    class Bar() {
         static void main(String... args) { launchUI() }
    }

我在项目的根目录下创建了一个snap文件夹,并在其中按照https://snapcraft.io/docs/java-applications上的说明创建了一个snap.yaml,所以我有一个可以生成也可以很好安装的snap文件的snap yaml:

name: deepthought
base: core18  
version: '0.0.7'
summary: ""
icon: gui/foo.png
description: |
 Computes the ultimate answer for life the universe and everything

grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots

# This doesn't work
#apps:
#  htmldoc:
#    command: desktop-launch $SNAP/bin/foo.sh
##    desktop: share/applications/htmldoc.desktop
#    plugs: [home,network,x11]
parts:
  foopart:
    plugin: gradle
    source: https://github.com/bsautner/foo.git
    source-type: git
    gradle-options: []   # suppress running of tests and run the war task
    gradle-output-dir: build/libs

我花了很多时间试图找出答案:

  • 如果我创建了一个运行Java -jar foo.jar命令的shell脚本,它最终会位于/ snap目录中,但是它不在用户路径上,因此他们无法进入
  • 我尝试创建启动器,但是如果我将其放在根文件夹中(因为/bin/launch.sh snap找不到并放入),总是会出现找不到启动器的错误在snap / bin /文件夹中,我也遇到错误,无法将其放置在snap文件夹中
  • 当我安装快照时,我看不到要执行的jar所在的位置,因此我无法编写执行该操作的脚本

如果有人可以与启动器共享Java程序的有效snap.yaml,并且有提及您注意到的文件的路径,那么我将非常感激。 snap / snap.yaml文件

解决方法

确定了-文档没有这么说,但是文件是相对于项目的根目录的,因此即使yaml表示这是启动

apps:
  cmd3:
    command: usr/bin/foo.sh

foo.sh应该在项目的根目录中,这里的orginize部分将其移到bin目录中

  foo:
    plugin: gradle
    source-type: local
    source: .
    build-packages:
      - openjdk-11-jdk
    stage-packages:
      - openjdk-11-jdk
      - x11-utils
    organize:
      ${SNAPCRAFT_PART_BUILD}/jg-snap: usr/bin/foo.sh

该jar位于/ snap / foo / current / usr / jar目录中

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...