Não é possível encontrar a “classe principal” instalando meu próprio snap

3

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> 
    
por Poor-Man 26.04.2017 / 13:51

1 resposta

2

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
    
por popey 26.04.2017 / 14:02