I started working with Ubuntu Core and Snaps a few days ago. I've managed to finish the very basic tutorial about creating my own snap and everything worked perfect.
Now it's time to go further, so for bigger purposes I tried to create my own Hello World snap. My idea is to code a Java daemon for printing "hello world" right and backwards, using the StringUtils library just for the need of adding some maven dependencies, and downloading the code from a GitLab private repository.
The java code worked fine on my computer so I went for the 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
Time to run snapcraft and no problems so far, but when I try to install the delivered snap I get:
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.
The "systemctl status snap.java-maven-hello.daemon.service" gives me:
● 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'.
So, I understand the installation is not finding the .jar
to execute?, but I went deep on the folders created by snapcraft and the "basic-project-0.0.1-SNAPSHOT.jar"
is there, in /home/bec_1/wkf/snapmaven/parts/daemon/build/target
. My knowledge doesn't go much far to understand if the .jar location is right or why the installation is not finding the "main class". Any ideas?
By the way, my pom.xml
file looks like:
<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>