Non supported character set (add orai18n.jar in your classpath)

Hello,
during analysis of my PL/SQL code I get error:
Caused by: java.sql.SQLException: Non supported character set (add orai18n.jar in your classpath): EE8ISO8859P2

I use sonar-scanner-4.5.0.2216-windows and when the scanner is connecting to Oracle DB and downloading data dictionary data, it fails with given error.

Connection setting in sonar-project.properties looks like this:
sonar.plsql.jdbc.url=jdbc:oracle:thin:@suntest07.cpoj.cz:1530/tsdv3
sonar.plsql.jdbc.user=tia
sonar.plsql.jdbc.password=eee
sonar.plsql.jdbc.driver.class=oracle.jdbc.OracleDriver
sonar.plsql.jdbc.driver.path=c:/JavaDevelop/Sonar/lib/ojdbc8-19.3.0.0.jar

but probably probably parametrization of orai18n.jar is missing … no idea how to add it. When I add the file to classpath, it doesn’t help

thanks for your help
Ales

Hi,

Can you please copy the full stack trace?
You may have to run sonar-scanner with the -X option.

Thanks,
Pierre-Yves

14:59:33.060 ERROR: Error during SonarScanner execution
java.lang.IllegalStateException: SQLException occurred while loading the Data Dictionary.
at com.sonar.plsql.plugin.D.B(Unknown Source)
at com.sonar.plsql.plugin.D.(Unknown Source)
at com.sonar.plsql.plugin.J.execute(Unknown Source)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:386)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:382)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:351)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.sql.SQLException: Nepodporovaná znaková sada (přidejte orai18n.jar ke své cestě třídy): EE8ISO8859P2
at oracle.sql.CharacterSetUnknown.failCharsetUnknown(CharacterSetFactoryThin.java:233)
at oracle.sql.CharacterSetUnknown.convert(CharacterSetFactoryThin.java:194)
at oracle.jdbc.driver.PhysicalConnection.throughDbCharset(PhysicalConnection.java:10365)
at oracle.jdbc.driver.PhysicalConnection.enquoteIdentifier(PhysicalConnection.java:10442)
at oracle.jdbc.driver.OracleStatement.enquoteIdentifier(OracleStatement.java:6452)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3853)
at oracle.jdbc.driver.InsensitiveScrollableResultSet.findColumn(InsensitiveScrollableResultSet.java:270)
at oracle.jdbc.driver.GeneratedResultSet.getString(GeneratedResultSet.java:596)
at com.sonar.oracle.G.A.B.A(Unknown Source)

Thanks for sharing the stack trace.
It looks like a limitation of our PL/SQL analyzer.
I’m afraid there’s no easy solution for that.
I can think of 2 possible workarounds but they’re both a bit ugly and I’m not sure they work:

  • Workaround1: merge the 2 JAR files ojdbc8-19.3.0.0.jar and orai18n.jar into a single one and make sure sonar.plsql.jdbc.driver.path points to it. You may take some inspiration from this page.
  • Workaround 2: change the classpath used by sonar-scanner by setting the SONAR_SCANNER_OPTS environment variable:
set SONAR_SCANNER_OPTS=-classpath c:/path/to/sonar-scanner-cli-4.5.0.2216.jar;c:/path/to/orai18n.jar
3 Likes

“Ugly WA1” looks like working … second not. Thanks

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.