我想在Android的Delphi应用程序中使用smbj来访问本地网络上Linux机器上的SAMBA共享,但是在尝试使用Java2OP.exe生成网桥时遇到了问题。正在运行:
java2op.exe -jar D:\Delphi\Android\Utils\slf4j-api-1.7.9.jar -jar D:\Delphi\Android\Utils\bcprov-ext-debug-jdk15on-166.jar -jar D:\Delphi\Android\Utils\mbassador-1.3.2.jar -jar D:\Delphi\Android\Utils\asn-one-0.4.0.jar -unit Androidapi.JNI.SambaJ
产生错误:
eParsing jar: D:\Delphi\Android\Utils\bcprov-ext-debug-jdk15on-166.jar
Error: (Exception) - class or Interface expected
> 1:1 "Warning: Binary file META-INF/versions/9/org/bouncycastle/jcajce/spec/DHDomainParameterSpec contains org.bouncycastle.jcajce.spec.DHDomainParameterSpec"
如果我这样更改订单:
java2op.exe -jar D:\Delphi\Android\Utils\slf4j-api-1.7.9.jar -jar D:\Delphi\Android\Utils\mbassador-1.3.2.jar -jar D:\Delphi\Android\Utils\bcprov-ext-debug-jdk15on-166.jar -jar D:\Delphi\Android\Utils\asn-one-0.4.0.jar -unit Androidapi.JNI.SambaJ
我收到错误消息
Parsing jar: D:\Delphi\Android\Utils\mbassador-1.3.2.jar
Error: (Exception) - Generic Type "T" not defined
> 221:63 " public net.engio.mbassy.bus.SyncMessageBus$SyncPostCommand(T);"
有人可以告诉我我在做什么错吗?
错误列表:
Androidapi.JNI.SambaJ.pas issues:
com.hierynomus.asn1.types.ASN1Object: not found
com.hierynomus.asn1.types.constructed.ASN1TaggedObject: not found
com.hierynomus.asn1.types.primitive.ASN1ObjectIdentifier: not found
com.hierynomus.smbj.event.SMBEventBus$1: the parent class (net.engio.mbassy.bus.error.IPublicationErrorHandler) is not found
com.hierynomus.smbj.transport.tcp.async.AsyncDirectTcpTransport$1: the parent class (java.nio.channels.CompletionHandler) is not found
答案 0 :(得分:2)
根据manual page,您应在-jar
选项之后将罐子指定为以空格分隔的列表。
此外,由于您仅对访问SMBJ本身(而不是其依赖项)感兴趣,因此应使用-classes
选项来指定所需的SMBJ软件包。
尝试类似这样的方法(省略路径):
java2op -jar smbj-0.10.0.jar slf4j-api-1.7.9.jar bcprov-ext-debug-jdk15on-166.jar mbassador-1.3.2.jar asn-one-0.4.0.jar
-classes com.hierynomus.smbj.* com.hierynomus.smbj.share.*
-unit Androidapi.JNI.SambaJ
编辑
由于Java2OP和SMBJ似乎存在问题,因此您可以尝试使用JCIFS:
java2op -jar jcifs-1.3.19.jar -classes jcifs.smb.* -unit Androidapi.JNI.SambaJ