У меня есть простой класс Java с использованием Pi4J, который содержит основной метод. Я хочу собрать и развернуть его на Raspberry Pi. Я использую Java 8 в Windows 10, а моя IDE - NetBeans 8.1. Если проект настроен как обычное (не Maven) Java-приложение и настроен для развертывания на Raspberry Pi с помощью конфигураций сборки NetBeans, как показано здесь, проект будет строить нормальный и FTP через jar, а затем запускать его без проблем. Я хотел бы сделать то же самое, но с использованием Maven. Проблема в том, что код, который запускается, имеет код C, родной для архитектуры Pi ARM, и плагин Maven, который я использую, похоже, сначала запускает jar в моем локальном ящике, в котором код C выдает сбой, вызывая исключение
СЕРЬЕЗНО: невозможно загрузить [libpi4j.so] по пути: [/lib/libpi4j.so] java.lang.IllegalArgumentException: путь должен быть абсолютным, но найден: \ lib \ libpi4j.so в com.pi4j.util. NativeLibraryLoader.loadLibraryFromClasspath (NativeLibraryLoader.java:120) по адресу com.pi4j.util.NativeLibraryLoader.load (NativeLibraryLoader.java:92) по адресу com.pi4j.wiringpi.Gpio. (Gpio.java:174j.io. gpio.RaspiGpioProvider. (RaspiGpioProvider.java:51) в com.pi4j.io.gpio.GpioFactory.getDefaultProvider (GpioFactory.java:106) в com.pi4j.io.gpio.impl.GpioControllerImpller:54) в com.pi4j.io.gpio.GpioFactory.getInstance (GpioFactory.java:89) в com.hadronix.pi4jsample2.ControlGpioExample.main (ControlGpioExample.java:24)
Исключение в потоке "main" java.lang.UnsatisfiedLinkError: com.pi4j.wiringpi.Gpio.wiringPiSetup () I в com.pi4j.wiringpi.Gpio.wiringPiSetup (собственный метод) в com.pi4j.io.gpio.RaspiGpioProvider. ( RaspiGpioProvider.java:51) в com.pi4j.io.gpio.GpioFactory.getDefaultProvider (GpioFactory.java:106) в com.pi4j.io.gpio.impl.GpioControllerImpl. (GpioControllerImpl.java4pi) в com.com. io.gpio.GpioFactory.getInstance (GpioFactory.java:89) в com.hadronix.pi4jsample2.ControlGpioExample.main (ControlGpioExample.java:24)
Если я просто сделаю чистую сборку, она будет нормально строиться и создаст банку. Однако, если я решу запустить сборку, тогда произойдет сбой. Это плагин Maven, который я использую для развертывания jar на Pi.
<!-- OPTIONALLY DEPLOY THE FINAL JAR TO THE RASPBERRY PI -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<!-- copy the compiled JAR file to the Raspberry Pi platform platform -->
<execution>
<id>ControlGpioExample.jar</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"
classpathref="maven.plugin.classpath" />
<if>
<equals arg1="${pi.transfer.dev}" arg2="true" />
<then>
<!-- ensure the target directory exists on the Raspberry Pi -->
<sshexec host="${pi.host.dev}" port="${pi.port.dev}" username="${pi.user.dev}"
password="${pi.password.dev}" trust="true" failonerror="false"
verbose="true" command="mkdir --parents ${pi.dirCopyTo.dev}" />
<!-- copy the JAR file to the Raspberry Pi -->
<scp
file="${project.build.directory}/${project.build.finalName}.jar"
todir="${pi.user.dev}:${pi.password.dev}@${pi.host.dev}:${pi.dirCopyTo.dev}"
port="${pi.port.dev}" trust="true" verbose="true" failonerror="true">
</scp>
</then>
</if>
</tasks>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>${ant-jsch.version}</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>${jsch.version}</version>
</dependency>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>${ant-contrib.version}</version>
</dependency>
</dependencies>
</plugin>
Я пытаюсь понять, как изменить этот плагин, чтобы сначала не выполнять код на моем локальном компьютере. Я просто хочу, чтобы он предполагал, что банка построена, ssh в удаленный Pi и скопировала банку, а затем запустила ее там. Кроме того, если у кого-то есть способ лучше использовать Maven, я открыт для предложений. Любая помощь была бы замечательной!
Вот ссылки на то, что я использую в качестве ссылок ссылка 1
Заранее спасибо.