Reputation: 1
I used JNA with GLUON before and had no problems. Everything worked. I tried replacing JNA with JNR.
When I run mvn gluonfx:runagent
, JNR runs successfully.
However, after mvn clean gluonfx:build
when running the exe file, the JRA does not work.
The message in the log is:
Warning: Could not resolve JNRTest$NativeLib for reflection configuration. Reason: java.lang.ClassNotFoundException: JNRTest$NativeLib.
Code JNR
import jnr.ffi.LibraryLoader;
import lombok.extern.slf4j.Slf4j;
public class JNRTest {
public interface NativeLib {
double cosh(double value);
}
public double test() {
NativeLib lib = LibraryLoader.create(NativeLib.class).load("msvcrt.dll");
return lib.cosh(2.3);
}
}
Pom file:
<?xml version="1.0" encoding="UTF-8"?>
<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>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<main.class>Main</main.class>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<javafx.version>17</javafx.version>
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
<javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version>
<gluonfx.maven.plugin.version>1.0.19</gluonfx.maven.plugin.version>
<gluonfx.target>host</gluonfx.target>
<lombok.version>1.18.20</lombok.version>
<logback.version>1.3.0-alpha14</logback.version>
<guava.version>30.0-jre</guava.version>
<gson.version>2.10.1</gson.version>
<jna.version>5.14.0</jna.version>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-ffi</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>com.gluonhq</groupId>
<artifactId>substrate</artifactId>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency>
<groupId>de.gsi.chart</groupId>
<artifactId>chartfx-chart</artifactId>
<version>11.2.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version>
<configuration>
<mainClass>${main.class}</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.maven.plugin.version}</version>
<configuration>
<target>${gluonfx.target}</target>
<mainClass>${main.class}</mainClass>
<linkerArgs>
<arg>management_ext.lib</arg>
<arg>psapi.lib</arg>
</linkerArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
What could be the problem?
Upvotes: 0
Views: 19