2014-02-19 27 views
0

根据我的要求,我开发了一个java代码,它将FTP文件从本地路径传输到服务器。现在我想将它作为一个过程/函数存储在数据库中,并且想从后端调用它。 下面是我的代码:从PLSQL调用JAVA FTP程序

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "FtpUrlUpload" AS 

package net.codejava.ftp; 

import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.net.URL; 
import java.net.URLConnection; 
import java.lang.String; 

public class FtpUrlUpload { 

private static final int BUFFER_SIZE = 4096; 

public static void main(String[] args) { 
    String ftpUrl = "ftp://%s:%[email protected]%s/%s;type=i"; 
    String host = "127.23.21.10"; 
    String user = "samuser"; 
    String pass = "password"; 
    String filePath = "E:/Work/Project.zip"; 
    String uploadPath = "/MyProjects/archive/Project.zip"; 

    ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath); 
    System.out.println("Upload URL: " + ftpUrl); 

    try { 
     URL url = new URL(ftpUrl); 
     URLConnection conn = url.openConnection(); 
     OutputStream outputStream = conn.getOutputStream(); 
     FileInputStream inputStream = new FileInputStream(filePath); 

     byte[] buffer = new byte[BUFFER_SIZE]; 
     int bytesRead = -1; 
     while ((bytesRead = inputStream.read(buffer)) != -1) { 
      outputStream.write(buffer, 0, bytesRead); 
     } 

     inputStream.close(); 
     outputStream.close(); 

     System.out.println("File uploaded"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 
} 

我面临的一个问题,而试图编译数据库。下面是问题: 错误Java源FtpUrlUpload:

LINE/COL                   
-------------------------------------------------------------------------------- 
ERROR                   
-------------------------------------------------------------------------------- 
0/0                    
FtpUrlUpload:22: cannot resolve symbol           

0/0                    
symbol : method format (java.lang.String,java.lang.String,java.lang.String,java 
.lang.String,java.lang.String)             

0/0                    
1 error                   

LINE/COL                   
-------------------------------------------------------------------------------- 
ERROR                   
-------------------------------------------------------------------------------- 

0/0                    
     ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath);   

0/0                    
        ^              

0/0                    
location: class java.lang.String             

LINE/COL                   
-------------------------------------------------------------------------------- 
ERROR                   
-------------------------------------------------------------------------------- 

但我已经使用javac,它是越来越成功编译编译它。我基本上是一个数据库程序员(SQL/PLSQL),并且具有关于java的知识。任何人都可以在这里指导我。

+0

也许你正在使用旧版本的Java <1.5? –

+0

我正在使用java版本1.6.0_29。但我试图使用标准命令'CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED'通过Oracle数据库进行编译。我的Oracle版本是10.2.0.1.0。 – user3327133

回答

1

你的问题是,甲骨文JVMOracle数据库10.2使用的Java 1.4.x的,所以在1.4 String.format() did'nt存在。 使用javac编译时,您使用的是Java的最新版本(1.5或更高版本),因此没有任何问题。 我的建议是删除String.format(),你应该遵循1.4 java风格。