我安装了oracle数据库并创建了一个服务。
OracleDB的屏幕截图
然后我用oracle sql developer连接到它,它就连接了。但是我尝试与Eclipse连接,它抛出错误,指出Ping error
。我已经提供了需要通过的所有屏幕截图。请帮助解决此问题。预先感谢。
此图像包含我在Oracle SQL Developer中配置的OracleDB连接详细信息
然后我试图在oracle sql开发人员中找出oracle DB的服务名称。
此图片具有服务名称
在Eclipse中,我将路径设置为OJDBC14.jar
,并且属性配置如镜像所示。请检查我是否提供了适当的详细信息。
这具有属性设置-Eclipse
此图像具有常规设置-Eclipse
答案 0 :(得分:1)
该问题似乎是由于使用此方法retrieveFileStream();
引起的,该方法需要一些额外的过程,并且服务器一旦完成,则断开连接或运行异常。以下是api referance中的关键零件信息:
retrieveFileStream-返回一个InputStream,来自该InputStream的一个命名文件 可以读取服务器。如果当前文件类型为ASCII,则 返回的InputStream会将文件中的行分隔符转换为 本地代表。完成操作后,您必须关闭InputStream 从中读取。 InputStream本身将负责关闭 父数据连接套接字在关闭后。
要完成文件传输,您必须调用completePendingCommand ,然后 检查其返回值以验证成功。如果不这样做, 后续命令的行为可能会异常。
因此,您需要关闭is.close();
,然后使用ftpClient.completePendingCommand();
。完成此操作后,您可以检查连接是否仍然有效if(ftp.isConnected() == true){...}
,如果没有,则可以重新连接ftp.connect(...);
,然后移至下一个命令来更改工作目录。
//Open the stream
is =ftpClient.retrieveFileStream(filename+".json");
//Process the stream data
int i=0;
String valuesinside="";
while((i = is.read())!=-1)
{
//valuesinside+=valuesinside+i;
char c = (char)i;
valuesinside+=Character.toString(c);
ftpfilelist=valuesinside;
}
//Close the stream and complete the command
is.close();
Boolean result = ftpClient.completePendingCommand();
//check if connection is alive
if(ftp.isConnected() == false){
//reconnect here with your server details
//...
}
//Now move onto the next commands
ftpClient.changeToParentDirectory();/
ftpClient.changeWorkingDirectory("COMPLETED");
System.out.println("PARENRT+++++:::::"+ftpClient.printWorkingDirectory());
或者,您可以使用其他方法手动管理流而不是使用API,例如,可以执行retrieveFile(fileName, outputStream);
。
如果您对导致错误发生的其他原因有更多的兴趣,请参见apache FTPClient docs:
ParserInitializationException-如果parserKey参数被抛出 所选的解析器工厂无法解析。在里面 DefaultFTPEntryParserFactory,当parserKey为 既没有实现该类的类的全限定类名,也没有 接口org.apache.commons.net.ftp.FTPFileEntryParser也不是字符串 包含映射到此类解析器的识别键之一,或者 类加载器的安全问题导致无法加载。