我正在用Delphi 10.2 for Android创建一个应用程序。此应用程序必须从Windows服务器获取一些文件。我进行了一些研究,似乎应该使用jcifs-1.3.18.jar Java库。 在 http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_a_Custom_Set_of_Java_Libraries_In_Your_RAD_Studio_Android_Apps
出现开始使用jar库的指示。
这是我第一次使用jar和Delphi库,所以我在JAVA中做了一个测试jar:
package pruebaDelphi;
public class Inicio {
public int suma(){
return 66;
}
}
Y用JAVA2OP制成.jar,.pas,将.jar添加到delphi库中,此代码返回预期的66:
procedure TForm1.Button1Click(Sender: TObject);
var
pr : TJInicio;
pr1: JInicio;
begin
pr1 := pr.JavaClass.Init;
showmessage(inttoStr(pr1.suma()));
end
但是问题始于JAVA中的下一个代码:
public String copiarFicheros(){
String url = "smb://ip";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "user", "password");
SmbFile dir = null;
String resultado = "KO";
try {
dir = new SmbFile(url, auth);
} catch (MalformedURLException e) {
//e.printStackTrace();
}
try {
for (SmbFile f : dir.listFiles())
{
if (f.getName().equals("ant.OLD")){
resultado = "OK";
}
//System.out.println(f.getName());
}
} catch (SmbException e) {
//e.printStackTrace();
}
return resultado;
}
此代码在JAVA上有效。我在Delphi中添加了jcifs jar,但是当我这样做时:
ShowMessage(JStringToString(pr1.copiarFicheros));
返回错误:
java.lang.ExceptionInInitializerError
然后单击下一步:
java.lang.NoClassDefFoundError:jcifs / UniAddress。
有人可以帮助我吗? 谢谢您的时间!
顺便说一句:我知道我可以使用其他替代方法来复制文件(云,FTP服务器等),但是对我来说重要的是,我要学习如何在RAD Studio应用程序中使用自己的或第三方Java库。
乔恩