Получение java.lang.UnsatisfiedLinkError: нет sapjco3 в ошибке java.library.path с использованием SAP jco 3.0.11 для 32-битных окон

Я получаю указанную ниже ошибку при использовании jar SAPJCO 3.0.11 для 32-битной ОС Windows XP. Я использую пример StepByStepClient, упомянутый в zip-библиотеке, когда я загрузил банку 32, но SAPJCO с торговой площадки. В Jar, который я скачал, никогда не было DLL-файла для 32-битной системы. пожалуйста, дайте мне знать, что мне не хватает, и, пожалуйста, помогите мне решить эту проблему.

Ниже приведена ошибка:

ava.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1088)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.loadJCoLibrary(DefaultJCoRuntime.java:772)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:382)
    at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:1200)
    at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:792)
    at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:36)
    at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:238)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:217)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:98)
    at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at com.sap.conn.jco.JCo.createJCo(JCo.java:52)
    at com.sap.conn.jco.JCo.<clinit>(JCo.java:26)
    at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:77)
    at com.sap.connect.StepByStepClient.step1Connect(StepByStepClient.java:91)
    at com.sap.connect.StepByStepClient.main(StepByStepClient.java:358)
Exception in thread "main" java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

Спасибо, Рохит


person Rohit Sharma    schedule 23.09.2014    source источник
comment
Можете ли вы опубликовать свой код?   -  person Max    schedule 23.09.2014


Ответы (1)


Во-первых, несмотря на то, что этот коннектор разработан для Java, вы должны знать, что коннектор SAP Java не является независимым от платформы. Вы должны были догадаться, потому что на веб-сайте SAP есть разные ссылки для скачивания для каждой архитектуры.

Итак, SAP Java Connector состоит в основном из двух частей:

  • файл sapjco3.jar для привязки Java (независимо от платформы).
  • собственная библиотека (файл .so или файл .dll) для привязки к конкретной платформе.

Чтобы ваше приложение работало, просто убедитесь, что оба файла находятся в PATH (или CLASSPATH) вашего приложения, и все готово.

Если вы работаете под Windows, копирование файла .dll в \Windows\System32 будет работать, но щенок умирает каждый раз, когда вы это делаете. Если вы любите щенков, не делайте этого. Всегда.

Еще лучше было бы всегда читать документацию. Это действительно очень хорошая практика. В документации для SAP Java Connector 3.0 четко указано следующее:

SAP Java Connector 3.0 :: Установка

...

Майкрософт Windows

...

Примечание. Не копируйте sapjco3.dll ни в каталог {windows-dir}\system32, ни в каталог {windows-dir}\SysWOW64. Это нарушит работоспособность других версий JCo, которые уже установлены в той же системе. Кроме того, вы рискуете, что текущая установка также больше не будет работать, если в будущем sapjco3.dll будет заменен в соответствующем системном каталоге Windows.

  • Затем добавьте {sapjco3-path} к переменной среды PATH.
  • Наконец, добавьте {sapjco3-path}\sapjco3.jar в переменную среды CLASSPATH.

...

Это означает, что разработчики SAP любят щенков.

person Diego Queiroz    schedule 17.07.2017