Доступ к файлу через JNA - PullRequest
0 голосов
/ 06 ноября 2018

Я создал библиотеку Java (SampleJar.jar). Эта библиотека загружает или обращается к DLL (SampleDll.dll), созданной в c ++. Я использовал JNA, так как он проще в использовании, чем JNI. SampleDll должен получить доступ к файлу с именем Config.bin в папке «Test». Однако, когда я пытаюсь запустить мое приложение, оно возвращает ошибку, что файл не существует. Ниже приведен код SampleJar, который вызывает SampleDll:

package com.Sample;

import com.sun.jna.Library;
import com.sun.jna.Native;

public interface SampleLibrary extends Library 
{
    SampleLibrary instance = (SampleLibrary )Native.loadLibrary("SampleDll", com.Sample.SampleLibrary.class);

    public int OpenSession(path);
}

Класс, который вызывает метод OpenSession (другой класс, связанный с SampleJar):

public class NewClass
{
    public NewClass(String filePath)
    {
         SampleLibrary.instance.OpenSession(filePath);
    }
}

А это код класса Main, который вызывает SampleJar:

import com.Sample.NewClass;
import com.Sample.SampleLibrary;

public static void main(String[] args) 
{
    NewClass newClass = new NewClass (System.getProperty("user.dir"));
}

Я экспортировал исполняемый jar-файл своего приложения и назвал его SampleJnaApplication.jar. Я запускаю файл jar с помощью этой команды:

java -jar SampleJnaApplication.jar

Ниже приведена структура файла:

C:\SampleApplication
  \-- SampleJnaApplication.jar
  \-- SampleDll.dll
  \-- Test 
      \-- Config.bin

Что может быть причиной этой проблемы?

...