#java #ubuntu #snapcraft
#java #ubuntu #snapcraft
Вопрос:
У меня есть базовое java-приложение, использующее java.awt Swing UI, и я хочу создать для него привязку, чтобы при его установке была доступна панель запуска и запускался мой пользовательский интерфейс. Я использую gradle и задачу jar для создания jar, которая работает нормально.
Естественно, у меня есть класс, который при вызове отлично загружает мое приложение:
package com.foo
class Bar() {
static void main(String... args) { launchUI() }
}
Я создал папку snap в корне проекта и snap.yaml, где я следовал инструкциям по https://snapcraft.io/docs/java-applications итак, у меня есть snap yaml, который создает файл snap, который также устанавливается нормально:
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 команда он попадает в каталог / snap, но его нет в пути пользователя, поэтому они не могут добраться до него
- Я пытался создавать пусковые установки, но всегда получаю сообщение об ошибке, что моя пусковая установка не может быть найдена, если я помещу ее в свою корневую папку как /bin/launch.sh snap не может его найти, и если я помещаю его в папку snap / bin /, я также получаю ошибки, чтобы не помещать вещи в папку snap
- Когда я устанавливаю свою оснастку, я не вижу, куда она помещает мой jar, который я хочу выполнить, поэтому я не могу написать скрипт, который это делает
Я был бы очень признателен, если бы кто-нибудь мог поделиться рабочим snap.yaml для java-программы с лаунчером, и если есть какое-либо упоминание о пути к чему-то, что вы отметили, где эти файлы находятся по отношению к пути к файлу / snap/ snap.yaml
Ответ №1:
хорошо понял это — в документах этого не сказано, но файлы относятся к корню проекта, поэтому, хотя 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