проблемы с оберткой com4j - PullRequest
4 голосов
/ 03 марта 2012

Я пытаюсь сгенерировать оболочку для com4j, используя tlbimp-20110320.jar.Я также пробовал версию 2008 года с теми же ошибками.Я получаю те же ошибки, даже когда пытаюсь выполнить пример, приведенный в статье.

C:\Users\matthew\Documents\NetBeansProjects\test>"C:\Program Files (x86)\Java\jr
e7\bin\java.exe" -jar tlbimp-20110320.jar -o excel -p excel "C:\Program Files (x
86)\Microsoft Office\Office14\EXCEL.EXE"
Exception in thread "main" java.lang.NoClassDefFoundError: org/kohsuke/args4j/Cm
dLineException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.kohsuke.args4j.CmdLineException

    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 6 more

После того, как Iceman предоставил ссылку на нужную библиотеку, я смог заставить ее работать немного.Однако мне пришлось скопировать содержимое arg4j в tlbimp jar, а также содержимое com4j в tlbimp jar.Теперь я получаю

C:\Users\matthew\Documents\NetBeansProjects\test>"C:\Program Files (x86)\Java\jr
e7\bin\java.exe" -jar tlbimp-20110320.jar -o excel -p excel "C:\Program Files (x
86)\Microsoft Office\Office14\EXCEL.EXE"
Generating definitions from Excel
A referenced type library "Office" is generated into the same package "excel"
Unable to handle the type SAVEARRAY(Variant)*
  method ConnectData
  interface IRtdServer
A referenced type library "VBIDE" is generated into the same package "excel"
Exception in thread "main" java.lang.NullPointerException
    at com4j.tlbimp.driver.Driver$1.resolve(Driver.java:64)
    at com4j.tlbimp.Generator$LibBinder.<init>(Generator.java:382)
    at com4j.tlbimp.Generator.getTypeLibInfo(Generator.java:686)
    at com4j.tlbimp.Generator.getTypeName(Generator.java:663)
    at com4j.tlbimp.TypeBinding.bind(TypeBinding.java:173)
    at com4j.tlbimp.MethodBinder.declareReturnType(MethodBinder.java:542)
    at com4j.tlbimp.MethodBinder.declareWithDefaults(MethodBinder.java:399)
    at com4j.tlbimp.MethodBinder.declare(MethodBinder.java:118)
    at com4j.tlbimp.InvocableInterfaceGenerator.generateMethod(InvocableInte
rfaceGenerator.java:39)
    at com4j.tlbimp.InterfaceGenerator.generate(InterfaceGenerator.java:94)
    at com4j.tlbimp.Generator$LibBinder.generate(Generator.java:491)
    at com4j.tlbimp.Generator.generate(Generator.java:112)
    at com4j.tlbimp.driver.Driver.run(Driver.java:107)
    at com4j.tlbimp.driver.Main.doMain(Main.java:132)
    at com4j.tlbimp.driver.Main.main(Main.java:56)

Ответы [ 3 ]

1 голос
/ 29 марта 2016

требуется tlbimp-20110320.jar args4j-2.0.1.jar и com4j-20110320.jar
Примечание: com4j-20110320.jar, необходимо изменить имя на com4j.jar

Дополнительная информация

Для tlbimp последней версии ( tlbimp-2.1.jar ) требуется args4j-2.0.8.jar и com4j-2.1.jar .
В этой версии изменение имени файла не требуется.

0 голосов
/ 03 октября 2016

Разархивируйте tlbimp.jar и проверьте его манифест.Он имеет classpath, где args4j и com4j должны находиться в том же каталоге, что и tlbimp.jar, и требовать определенных именСпецифика имени зависит от сборки и может включать или не включать номер версии.Назовите ваши com4j и arg4j, как указано, и все готово.

0 голосов
/ 03 марта 2012

Судя по трассировке стека, похоже, что вам не хватает зависимых jar-файлов из пути к классу java.Программа, похоже, ищет библиотеку Кошук args4j - http://args4j.kohsuke.org/.

...