java.lang. UnsatisfiedLinkError никакой *****.dll в java.library.path

Удобочитаемость является ПЕРВОЙ целью.

В 1970-х армия протестировала некоторые из тогдашних "новых" методов разработки программного обеспечения (вершина вниз разрабатывают, структурное программирование, команды главного программиста, для именования некоторых) определить, какой из них сделал статистически значимые различия.

ЕДИНСТВЕННАЯ техника, которая сделала статистически значимые различия в разработке, была...

ДОБАВЛЯЮЩИЕ ПУСТЫЕ СТРОКИ для программирования кода.

улучшение удобочитаемости в тех предварительно структурированный, предобъектно-ориентированный код был единственной техникой в этих исследованиях, которые улучшили производительность.

оптимизация ==============

должна только быть обращена, когда весь проект является единицей, протестированной и готовой к инструментарию. Вы никогда не знаете, ГДЕ необходимо оптимизировать код.

В их ориентире заказывает Kernigan и Plauger в конце ПРОГРАММНЫХ ИНСТРУМЕНТОВ 1970-х (1976), и ПРОГРАММНЫЕ ИНСТРУМЕНТЫ В ПАСКАЛЕ (1981) показали, что способы создать структурированные программы с помощью вершины вниз разрабатывают. Они создали программы обработки текста: редакторы, средства поиска, кодируют препроцессоры.

, Когда завершенная текстовая функция форматирования была ОСНАЩЕНА, они обнаружили, что большая часть времени обработки была проведена в трех стандартных программах, которые выполнили ввод текста и произвели (В исходной книге, функции i-o взяли 89% времени. В книге Паскаля эти функции использовали 55%!)

Они смогли оптимизировать эти ТРИ стандартных программы и привели к результатам увеличенной производительности с разумным, управляемым временем разработки и стоили.

88
задан Adam Batkin 10 September 2009 в 08:00
поделиться

1 ответ

In order for System.loadLibrary() to work, the library (on Windows, a DLL) must be in a directory somewhere on your PATH or on a path listed in the java.library.path system property (so you can launch Java like java -Djava.library.path=/path/to/dir).

Additionally, for loadLibrary(), you specify the base name of the library, without the .dll at the end. So, for /path/to/something.dll, you would just use System.loadLibrary("something").

You also need to look at the exact UnsatisfiedLinkError that you are getting. If it says something like:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no foo in java.library.path

then it can't find the foo library (foo.dll) in your PATH or java.library.path. If it says something like:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V

then something is wrong with the library itself in the sense that Java is not able to map a native Java function in your application to its actual native counterpart.

To start with, I would put some logging around your System.loadLibrary() call to see if that executes properly. If it throws an exception or is not in a code path that is actually executed, then you will always get the latter type of UnsatisfiedLinkError explained above.

As a sidenote, most people put their loadLibrary() calls into a static initializer block in the class with the native methods, to ensure that it is always executed exactly once:

class Foo {

    static {
        System.loadLibrary('foo');
    }

    public Foo() {
    }

}
146
ответ дан 24 November 2019 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: