Ошибка класса JNA не найдена при использовании FANNJ для Ubuntu в Eclipse

#neural-network #jna #fann #fannj

#нейронная сеть #jna #fann #fannj

Вопрос:

Я пытаюсь использовать FANNJ в Eclipse (в Ubuntu), пытаясь создать игрушечную программу, но она продолжает выдавать эту ошибку, как показано ниже.

Код:

 package myPackage;

import com.googlecode.fannj.Fann;

public class mainclass {
   public static void man(String[] args) {
      System.out.println("1");
      Fann fann = new Fann("/home/sahil/Desktop/Intern/Java/eclipse/Workspace/UsingFANN/ANN_Net_Output1.net");
   }
}
 

Ошибка:

 Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Platform
    at com.googlecode.fannj.Fann.<clinit>(Fann.java:51)
    at myPackage.mainclass.main(mainclass.java:9)
    Caused by: java.lang.ClassNotFoundException: com.sun.jna.Platform
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
 

Может ли кто-нибудь, кто работает с FANNJ на Ubuntu, пожалуйста, объяснить, почему возникает эта ошибка?

Комментарии:

1. Не могли бы вы скопировать сообщение об ошибке в виде текста и вставить его сюда? Если кто-то будет искать ошибку в будущем, он сможет найти этот вопрос.

Ответ №1:

Убедитесь, что вы установили системное свойство jna.library.path на путь к библиотеке FANN. Это свойство похоже на java.library.path, но применяется только к библиотекам, загруженным JNA.

Вы также должны изменить соответствующую переменную среды доступа к библиотеке перед запуском виртуальной машины. (LD_LIBRARY_PATH в Linux)

Из командной строки:

 LD_LIBRARY_PATH=/usr/local/lib

java -Djna.library.path=/usr/local/lib -cp fannj-0.6.jar:jna-3.2.2.jar YourClass
 

Ответ №2:

Вам необходимо загрузить недостающую библиотеку «jna». После получения вы должны указать его в eclipse (используя свойства вашего проекта> Путь сборки Java> Библиотеки и добавив jar (вы можете просмотреть его в разделе «Добавить внешние банки …»).).

Хороший способ получить все зависимости для проекта — это «maven». Вы можете просто создать «pom.xml » файл в корневой папке вашего проекта. Так что запишите это:

 <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>com.something</groupId>
    <artifactId>MyProject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>MyProject</name>
    <description>MyProject</description>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.googlecode.fannj/fannj -->
        <dependency>
            <groupId>com.googlecode.fannj</groupId>
            <artifactId>fannj</artifactId>
            <version>0.6</version>
        </dependency>
    </dependencies>
</project>
 

И, наконец, в командной строке введите # mvn install, он загрузит зависимости и по умолчанию поместит все библиотеки в ваш «homefolder /.m2». Итак, найдите библиотеку JNA, вы найдете ее в какой-нибудь папке, подобной этой: «~/.m2/repository/net/java/dev/jna / jna /3.2.7». Если в вашем проекте используются другие библиотеки, кроме fannj, вы можете добавить их в pom-файл, чтобы собрать все вместе.