11

j2ee Web アプリケーションでこのエラーが発生しています。

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
 oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)
 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:376)
 oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
 oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
 java.sql.DriverManager.getConnection(Unknown Source)
 java.sql.DriverManager.getConnection(Unknown Source)
 org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
 org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
 org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
 org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)


 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)

このプロジェクトは同僚の PC で動作します...つまり、このプロジェクトは同僚の PC で動作しますが、プロジェクト フォルダーを要求して Eclipse にインポートすると、実行するとこのエラーが発生します。jar ファイルは、プロジェクト フォルダーに既にパッケージ化されています。

また、休止状態を使用して単純な j2ee プロジェクトを作成しましたが、同じエラーが発生しました。DBサーバーにpingを実行し、PL/SQL開発者を使用して参照しようとしましたが、問題はありません

4

11 に答える 11

8

以下を試してください:

  1. NLS_LANG 設定が正しいことを確認してください。Windows では、レジストリの下にあります\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
  2. Oracle クライアント ソフトウェアが正しくインストールされていることを確認します。
  3. そのコンピュータに複数のOracleホームがあるかどうかを確認してください。その場合は、アクティブなものを見つけて、動作するかどうかを確認してください。
  4. インストールされている場合は、SQL*Plus でテストします。Sql Developer は、独自のクライアント インストールがあるため機能します。

編集:
ドライバーについては、このサイトを確認してください: Oracle Instant Client。そこには、Oracle への JDBC アクセスに必要な最小限のドライバーのインストールに関するドキュメントがあります。私は.Netを使用しているため、それについてはあまり知りません。

編集 2:
この質問を参照してください: JDBC シン ドライバーの NLS_LANG 設定。あなたと同じエラーがあり、問題は NLS LANG のデフォルトのロケールが定義されていないことでした。見積もり:

NLS_LANG 設定は java.util.Locale から派生します。したがって、接続する前に、次のような呼び出しを行う必要があります。

  Locale.setDefault(Locale.<your locale here>);
于 2009-10-27T11:12:59.970 に答える
7

私も同じ問題を抱えていました。解決策は、国と言語を追加することでしたsqldeveloper.conf

ファイルを開いてください:

\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf

そして、次を追加します。

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

上記はトリックを行います。

参考:http ://forum.oradba.net/showthread.php?t=423&langid=1

于 2011-12-12T12:13:36.407 に答える
7

この 2 つのパラメーターを Java アプリに渡して問題を解決できることがわかりました。

-Duser.country=en -Duser.language=en

環境変数レベルで値を構成することもできます (OS によって異なります)。

于 2010-04-08T12:56:34.033 に答える
5

System FormatWindows env の場合、システム ロケールをに変更する必要がありますEnglish/US

システムロケールを変更するには?

于 2012-11-28T06:44:20.797 に答える
1

intelljIDE でコンパイルする場合は、構成モデルにある VMoptions に次のオプションを追加することをお勧めします

AddVMOption -Duser.region=us. 
于 2019-10-25T15:47:25.857 に答える
1

私は解決策を見つけました.OS(Windows 7)の地域と言語を変更し、オラクルの地域と言語と一致することを確認してください。

于 2010-08-03T07:43:39.730 に答える
1

Oracle JDBC ドライバーは、新しい接続を開いた後、次のステートメントを暗黙的に実行します。

ALTER SESSION SET NLS_LANGUAGE='language' NLS_TERRITORY='territory'

私たちの場合、Oracle XE 11g と、JDBC ドライバーに埋め込まれたデフォルトの言語/地域マッピングに問題がありました。「ru」ロケールは、Oracle EE でのみサポートされている「CIS」地域にマップされていましたが、Oracle XE には「RUSSIA」地域しかありませんでした。これを修正した方法は次のとおりです。

-Doracle.jdbc.territoryMap="ru=RUSSIA;RU=RUSSIA"

NLS_LANGUAGE のオプションがあります (デフォルトで問題はありませんでした):

-Doracle.jdbc.languageMap="ru=RUSSIAN;RU=RUSSIAN"

修正済み: Java jdbc ドライバーのクラス oracle.sql.converter.CharacterSetMetaData から取得された定数ru=RUSSIAN 。

于 2016-02-27T18:47:16.067 に答える