0

I'm working with Oracle database on CQ5 - OSGI bundle management. At first i have class javax.crypt.Cipher already imported at system bundle (org.apache.felix.framework).

...
javax.crypto,version=0.0.0.1_007_JavaSE
javax.crypto.interfaces,version=0.0.0.1_007_JavaSE
javax.crypto.spec,version=0.0.0.1_007_JavaSE 
...

Since then i followed this example to create a Oracle osgi connector bundle and imported the pakcage that contains javax.crypt.Cipher:

Imported Packages   javax.crypto,version=0.0.0.1_007_JavaSE from org.apache.felix.framework (0)
                    javax.crypto.interfaces,version=0.0.0.1_007_JavaSE from org.apache.felix.framework (0)
                    javax.crypto.spec,version=0.0.0.1_007_JavaSE from org.apache.felix.framework (0)

When i called sql connection to my database, an error was raised:

Caused by: java.lang.NoClassDefFoundError: javax/crypto/Cipher
    at oracle.security.o5logon.O5LoginClientHelper.decryptAES(Unknown Source)
    at oracle.security.o5logon.O5LoginClientHelper.generateOAuthResponse(Unknown Source)
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:655)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:366)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:65)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:974)
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
    at org.apache.jsp.apps.dbtest.components.dbconnectiontest.body_jsp._jspService(body_jsp.java:179)
    at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:502)
    ... 129 more

As my understanding javax.crypto.Cipher already compiled but does not exist on runtime, do you have any idead to resolve this issue ?

Tien Nguyen
  • 4,298
  • 9
  • 30
  • 44
  • Possible duplicate of [java.lang.NoClassDefFoundError: javax/crypto/Cipher](http://stackoverflow.com/questions/22464764/java-lang-noclassdeffounderror-javax-crypto-cipher) – Aniket Kulkarni Oct 19 '15 at 08:31

1 Answers1

0

Usually this class comes from jce.jar included by the Oracle JDK. But your software could not work with different kinds of JDKs, like OpenJDK.

Make this dependency available at runtime including the JCE standalone jar.

abarisone
  • 3,707
  • 11
  • 35
  • 54