1
Oracle 12ではOracle 9からコンパイルエラーが発生しているため、使用していた小さなJavaコードです。古いOracleバージョンでコンパイルされたJavaコードでは、Oracle 12.2でコンパイルエラーが発生する
(コードはここに発祥のように見えます:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584を)我々は、Javaコードまたは付与する必要がありますいくつかの新しい権限を変更する必要があるように
は12.2で変更何かを持っていますか?
編集:SQL挿入コードで行をコメントアウトすると、正しいコンパイルが行われます。おそらくその構文はもはや利用できないでしょうか?
create or replace and compile java source named "DirList"
as
import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
public class ChpDirList{
public static void getList(String directory)
throws SQLException {
File path = new File(directory);
String[] list = path.list();
String element;
for(int i = 0; i < list.length; i++){
element = list[i];
String fpath=directory+"/"+list[i];
File f = new File(fpath);
long len;
String ftype;
if (f.isFile()) {
len = f.length();
ftype = "F";
} else {
len = 0;
ftype = "D";
}
#sql { INSERT INTO NGM_DIR_LIST (file_name, file_length, file_type, file_modified)
VALUES (:element, :len, :ftype, null) };
}
}
}
/
エラーメッセージ:
Compilation errors for JAVA SOURCE NGM42.DIRLIST
#13#10Error: An exception has occurred in the compiler (1.8.0_121-ea). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
Line: 0
#13#10Error: java.lang.IllegalArgumentException
Line: 0
#13#10Error: at com.sun.tools.javac.util.JCDiagnostic.<init>(JCDiagnostic.java:412)
Line: 0
#13#10Error: at com.sun.tools.javac.util.JCDiagnostic$Factory.create(JCDiagnostic.java:238)
Line: 0
#13#10Error: at com.sun.tools.javac.util.JCDiagnostic$Factory.error(JCDiagnostic.java:103)
Line: 0
#13#10Error: at com.sun.tools.javac.util.AbstractLog.error(AbstractLog.java:117)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavaTokenizer.lexError(JavaTokenizer.java:136)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavaTokenizer.readToken(JavaTokenizer.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.Scanner.nextToken(Scanner.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.nextToken(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.accept(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseStatementAsBlock(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseStatementAsBlock(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.methodDeclaratorRest(JavacParser.java:3586)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.classOrInterfaceBodyDeclaration(JavacParser.java:3532)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.classOrInterfaceBody(JavacParser.java:3436)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.classDeclaration(JavacParser.java:3285)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.classOrInterfaceOrEnumDeclaration(JavacParser.java:3226)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.typeDeclaration(JavacParser.java:3215)
Line: 0
#13#10Error: at com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacParser.java:3155)
Line: 0
#13#10Error: at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:676)
Line: 0
#13#10Error: at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1037)
Line: 0
#13#10Error: at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:926)
Line: 0
#13#10Error: at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:890)
Line: 0
#13#10Error: at oracle.aurora.jdkcompiler.JdkDriver.compile(JdkDriver.java:572)
Line: 0
#13#10Error: at oracle.aurora.rdbms.Compiler.doCompile(Compiler.java:663)
Line: 0
#13#10Error: at oracle.aurora.rdbms.Compiler.access$000(Compiler.java:57)
Line: 0
#13#10Error: at oracle.aurora.rdbms.Compiler$1.run(Compiler.java:319)
Line: 0
#13#10Error: at java.security.AccessController.doPrivileged(Native Method)
Line: 0
#13#10Error: at oracle.aurora.rdbms.Compiler.compile(Compiler.java:317)
Line: 0
データベースに付属のJavaのバージョンでコンパイルしてみてください。私が知る限り、Oracleは依然としてJava 1.5しかサポートしていません。 – RealSkeptic
ありがとう、私はデータベース内でコンパイルしています。 Oracle Database 12c Release 2(12.2.0.1)は、Java 8のサポートを提供しています。 – Rene
これはOracle 12.1で正常にコンパイルされます。Javaのバージョンを確認することはできますか?1.6 'SELECT dbms_java.get_ojvm_property(PROPSTRING => 'java.version')FROM dual; ' –