Java 7のJVMとScalaで古い(Java 6)JDBC DataSourceドライバを使用するScalaコードをコンパイルする際に問題があるようです。Java 7のCommonDataSourceをScalaで使用する
Java 7の場合、OracleはCommonDataSource
インタフェースに新しいメソッドLogger getParentLogger()
を追加しました。 CommonDataSource
を実装するJava 6で構築された古いクラスは、このメソッドを実装しません(例:PGConnectionPoolDataSource
およびSQLServerDataSource
)。コードがScalaコンパイラでコンパイルされると、具体的なクラスが抽象メソッドgetParentLogger
を実装していないと訴えます。
これはJavaコンパイラで発生するかどうかはわかりませんが、単体テストでは検出されているはずです。
新しいメソッド宣言を追加するインターフェイスでこの問題が発生することは確かです。
この問題に対してScalaの回避策はありますか? JDK 6に戻す唯一のソリューションですか?私はSQL Serverドライバのソースコードを持っていないので、自分で問題を解決することはできません(オープンソースにはこの問題はありませんが、他の理由でそのドライバを使用する必要があります)。
どのようなコードが文句を言うのですか?あなたは 'SQLServerDataSource'をインスタンス化しようとしていますか、それを拡張していますか、何か他のことをしていますか? – leedm777
'new SQLServerDataSource {...}'匿名サブクラスとして拡張しようとしています(中括弧の中などにホストなどを設定しています)。私はまた、インスタンスを作成し、次にプロパティを初期化しようとしました**と**働いた。 – Ralph