2016-02-28 3 views
1

Привет я пытаюсь установить ниже зависимость в karafKaraf исключение при установке org.fusesource.leveldbjni

<dependency> 
    <groupId>org.fusesource.leveldbjni</groupId> 
    <artifactId>leveldbjni-all</artifactId> 
    <version>1.8</version> 
</dependency> 

я получаю ниже исключение

Exception caught while executing command 
org.apache.karaf.shell.console.MultiException: Error executing command on bundles: 
    Unable to execute command on bundle 564: The bundle "org.fusesource.leveldbjni.leveldbjni-all_1.8.0 [564]" could not be resolved. Reason: No match found for native code: META-INF/native/windows32/leveldbjni.dll; processor=x86; osname=Win32, META-INF/native/windows64/leveldbjni.dll; processor=x86-64; osname=Win32, META-INF/native/osx/libleveldbjni.jnilib; processor=x86; osname=macosx, META-INF/native/osx/libleveldbjni.jnilib; processor=x86-64; osname=macosx, META-INF/native/linux32/libleveldbjni.so; processor=x86; osname=Linux, META-INF/native/linux64/libleveldbjni.so; processor=x86-64; osname=Linux 
    at org.apache.karaf.shell.console.MultiException.throwIf(MultiException.java:92) 
    at org.apache.karaf.bundle.command.BundlesCommandWithConfirmation.doExecute(BundlesCommandWithConfirmation.java:58) 
    at org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:50) 
    at org.apache.karaf.bundle.command.BundlesCommandWithConfirmation.doExecute(BundlesCommandWithConfirmation.java:41) 
    at org.apache.karaf.shell.console.AbstractAction.execute(AbstractAction.java:33) 
    at org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:39) 
    at org.apache.karaf.shell.commands.basic.AbstractCommand.execute(AbstractCommand.java:33) 
    at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79] 
    at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79] 
    at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54) 
    at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119) 
    at org.apache.karaf.shell.console.commands.$BlueprintCommand1099159826.execute(Unknown Source)[37:org.apache.karaf.shell.console:3.0.1] 
    at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79] 
    at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79] 
    at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54) 
    at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119) 
    at org.apache.karaf.shell.console.commands.$BlueprintCommand1099159826.execute(Unknown Source)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89) 
    at org.apache.karaf.shell.console.impl.jline.ConsoleImpl$DelegateSession.execute(ConsoleImpl.java:521) 
    at org.apache.karaf.shell.console.impl.jline.ConsoleImpl.run(ConsoleImpl.java:212) 
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_79] 
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.doRun(ConsoleFactoryService.java:126)[37:org.apache.karaf.shell.console:3.0.1] 
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3$1.run(ConsoleFactoryService.java:117) 
    at java.security.AccessController.doPrivileged(Native Method)[:1.7.0_79] 
    at org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)[38:org.apache.karaf.jaas.modules:3.0.1] 
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.run(ConsoleFactoryService.java:115)[37:org.apache.karaf.shell.console:3.0.1] 
Caused by: java.lang.Exception: Unable to execute command on bundle 564: The bundle "org.fusesource.leveldbjni.leveldbjni-all_1.8.0 [564]" could not be resolved. Reason: No match found for native code: META-INF/native/windows32/leveldbjni.dll; processor=x86; osname=Win32, META-INF/native/windows64/leveldbjni.dll; processor=x86-64; osname=Win32, META-INF/native/osx/libleveldbjni.jnilib; processor=x86; osname=macosx, META-INF/native/osx/libleveldbjni.jnilib; processor=x86-64; osname=macosx, META-INF/native/linux32/libleveldbjni.so; processor=x86; osname=Linux, META-INF/native/linux64/libleveldbjni.so; processor=x86-64; osname=Linux 
    at org.apache.karaf.bundle.command.BundlesCommandWithConfirmation.doExecute(BundlesCommandWithConfirmation.java:55) 
    ... 32 more 
Caused by: org.osgi.framework.BundleException: The bundle "org.fusesource.leveldbjni.leveldbjni-all_1.8.0 [564]" could not be resolved. Reason: No match found for native code: META-INF/native/windows32/leveldbjni.dll; processor=x86; osname=Win32, META-INF/native/windows64/leveldbjni.dll; processor=x86-64; osname=Win32, META-INF/native/osx/libleveldbjni.jnilib; processor=x86; osname=macosx, META-INF/native/osx/libleveldbjni.jnilib; processor=x86-64; osname=macosx, META-INF/native/linux32/libleveldbjni.so; processor=x86; osname=Linux, META-INF/native/linux64/libleveldbjni.so; processor=x86-64; osname=Linux 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332) 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316) 
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323) 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300) 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:292) 
    at org.apache.karaf.bundle.command.Start.executeOnBundle(Start.java:27) 
    at org.apache.karaf.bundle.command.BundlesCommandWithConfirmation.doExecute(BundlesCommandWithConfirmation.java:53) 
    ... 32 more 

Я пытаюсь установить некоторые функции opendaylight и одна из функций внутренне использует эту зависимость. Я пропустил что-то, пожалуйста, помогите.

+0

ошибка говорит, что не может найти родную библиотеку для вашего процессора/os. Каково значение свойств 'org.osgi.framework.os.name' и' org.osgi.framework.os.processor' (вы можете увидеть их с помощью команды 'system: property') –

+0

org.osgi.framework .Операционные системы.name = window 8.1 org.osgi.framework.os.version = 6.3.0 Я могу найти значение для свойства org.osgi.framework.os.processor – Charity

+0

В стеке говорится, что он не может найти dll. Dll является частью самого контейнера зависимости. http://www.java2s.com/Code/Jar/l/Downloadleveldbjniall17jar.htm. FYI я принял распределение oparaylight karaf. https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/distribution-karaf/0.4.0-SNAPSHOT. – Charity

ответ

3

Комплект «leveldbjni» имеет зависимость от «родной» библиотеки. Родной, как в «зависимой от os». В OSGi пакет может объявлять несколько туземных библиотек и указывать для каждой библиотеки, когда эта библиотека может быть загружена.

В вашей ошибки, вы можете увидеть, какие библиотеки этот пакет можно загрузить:

  • windows32/leveldbjni.dll если процессор = x86; osname = Win32
  • windows64/leveldbjni.dll если процессор = x86-64; osname = Win32
  • osx/libleveldbjni.jnilib если процессор = x86; osname = macosx
  • osx/libleveldbjni.jnilib если процессор = x86-64; osname = macosx
  • linux32/libleveldbjni.so если процессор = x86; osname = Linux
  • linux64/libleveldbjni.so если процессор = x86-64; osname = Linux

В вашем случае osname = «Windows 8.1», поэтому нет библиотеки, соответствующей этому имени, и это требование не выполняется.

Каждая структура OSGi имеет список «псевдоним» для сопоставления имен osname-s. Это зависит от вашей реализации (и версий). Например, latest version of Equinox имеет такую ​​конфигурацию:

Windows8 "Windows 8" "Windows 8.1" "Windows 8.2" "Windows 8.3" Win8 Win32 # Microsoft 

Felix В:

felix.native.osname.alias.windows8=windows 8,win32 

я не знаю, которые вы используете рамки, или какая версия, но если вы используете Felix (который по умолчанию), вы можете попробовать добавить в файл etc/system.properties:

felix.native.osname.alias.windows8=windows 8,windows 8.1,win32 

в равноденствия, этот вопрос отслеживается Bug 423970. Я не знаю, как переопределить эти свойства. У Karaf 4 есть версия Equinox, которая должна работать.

Вы можете попробовать, может быть, чтобы переопределить в etc/system.properties значение зева (Честно говоря, я не знаю, если он будет работать, так как это значение должно быть обнаружено - и это уродливое хак Кодирую это значение)

org.osgi.framework.os.name = Win32 
+0

В моем karaf 4.0.3 я не могу найти эту запись в system.properties. Так что я должен добавить и посмотреть? – Charity

+0

да, вы должны добавить его, «и посмотреть» :-) –

+0

Я сделал запись в system.properties. Караф по-прежнему бросает ту же ошибку. – Charity

0

В качестве обходного решения, hardcode OS в etc/system.properties путем добавления org.osgi.framework.os.name = Win32 к нему. Это окончательный совет от ответа Джереми Б, который решил проблему для меня.

Смежные вопросы