Você pode precisar especificar o caminho para o arquivo jar ao iniciá-lo. Algo como isto: -
command: java -cp $SNAP/basic-project-0.0.1-SNAPSHOT.jar es.ramadorp.odm.snapcraft.test.daemon.Daemontest
Comecei a trabalhar com o Ubuntu Core e o Snaps há alguns dias. Eu consegui terminar o tutorial muito básico sobre criar meu próprio snap e tudo funcionou perfeitamente.
Agora é hora de ir mais longe, então, para propósitos maiores, tentei criar meu próprio snap Hello World. Minha idéia é codificar um daemon Java para impressão "Olá mundo" direito e para trás, usando a biblioteca StringUtils apenas para a necessidade de adicionar algumas dependências Maven, e transferir o código a partir de um repositório privado gitlab.
O código java funcionou bem no meu computador, então fui para o snapcraft.yaml:
name: java-maven-hello
version: 0
summary: A java example using maven dependecies
description: this is not much more than an example
confinement: devmode
grade: devel
apps:
daemon:
command: java -cp basic-project-0.0.1-SNAPSHOT.jar es.ramadorp.odm.snapcraft.test.daemon.Daemontest
restart-condition: always
daemon: forking
parts:
daemon:
plugin: maven
source: http://gitlab.ramadorp.es/ramador/snap-maven-test.git
O tempo para executar snapcraft e sem problemas até agora, mas quando eu tento instalar o snap entregue eu recebo:
error: cannot perform the following tasks:
- Start snap "java-maven-hello" (unset) services ([start snap.java-maven-hello.daemon.service] failed with exit status 1: Job for snap.java-maven-hello.daemon.service failed because the control process exited with error code.
O "estado systemctl snap.java-maven-hello.daemon.service" me dá:
● snap.java-maven-hello.daemon.service
Loaded: not-found (Reason: No such file or directory)
Active: failed (Result: timeout) since lun 2017-04-24 10:23:54 CEST; 4min 34s ago
abr 24 10:22:24 Bec systemd[1]: Starting Service for snap application java-maven-hello.daemon...
abr 24 10:22:24 Bec /usr/bin/snap[8670]: cmd.go:111: DEBUG: restarting into "/snap/core/current/usr/bin/snap"
abr 24 10:22:24 Bec snap[8670]: Error: Could not find or load main class es.ramadorp.odm.snapcraft.test.daemon.Daemontest
abr 24 10:22:24 Bec systemd[1]: snap.java-maven-hello.daemon.service: Control process exited, code=exited status=1
abr 24 10:23:54 Bec systemd[1]: snap.java-maven-hello.daemon.service: Start operation timed out. Terminating.
abr 24 10:23:54 Bec systemd[1]: Failed to start snap.java-maven-hello.daemon.service.
abr 24 10:23:54 Bec systemd[1]: snap.java-maven-hello.daemon.service: Unit entered failed state.
abr 24 10:23:54 Bec systemd[1]: snap.java-maven-hello.daemon.service: Failed with result 'timeout'.
Então, eu entendo a instalação não é encontrar o .jar
para executar ?, mas eu fui profunda nas pastas criadas pelo snapcraft eo "basic-project-0.0.1-SNAPSHOT.jar"
está lá, em /home/bec_1/wkf/snapmaven/parts/daemon/build/target
. Meu conhecimento não ir muito longe para entender se o local .jar é certo ou por que a instalação não é encontrar a "classe principal". Alguma ideia?
A propósito, meu arquivo pom.xml
se parece com:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.boundedinfinity</groupId>
<artifactId>basic-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
</project>
Você pode precisar especificar o caminho para o arquivo jar ao iniciá-lo. Algo como isto: -
command: java -cp $SNAP/basic-project-0.0.1-SNAPSHOT.jar es.ramadorp.odm.snapcraft.test.daemon.Daemontest
Tags ubuntu-core snap