I am getting a NullPointerException from PersistenceUnitInfoImpl$PersistenceClassFileTransformer.transform() when running in Java 8.
I have a command line application using openejb-core-4.7.2 and running in Java 8, so when starting the app it runs using the javaagent openejb-javaagent.jar. This app uses JPA, but also has some legacy code that gets jdbc connections using a BasicDataSource. Now whenever it gets a jdbc connection the javaagent seems to be doing some manipulations of the byte code and a NullPointerException is thrown from org.apache.openejb.persistence.PersistenceUnitInfoImpl from the method PersistenceClassFileTransformer.transform at the line that reads 'String replace = className.replace('/', '.');'. So className appears to be null. This is the method where the exception comes from public byte[] transform(ClassLoader classLoader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { String replace = className.replace('/', '.'); return PersistenceUnitInfoImpl.isServerClass(replace)?classfileBuffer:this.classTransformer.transform(classLoader, replace, classBeingRedefined, protectionDomain, classfileBuffer); } When running this same app in Java 7 no exceptions are thrown. This is the stack trace: java.lang.NullPointerException at org.apache.openejb.persistence.PersistenceUnitInfoImpl$PersistenceClassFileTransformer.transform(PersistenceUnitInfoImpl.java:358) at org.apache.openejb.persistence.PersistenceBootstrap$Transformer.transform(PersistenceBootstrap.java:429) at sun.instrument.TransformerManager.transform(TransformerManager.java:188) at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428) at sun.misc.Unsafe.defineAnonymousClass(Native Method) at java.lang.invoke.InvokerBytecodeGenerator.loadAndInitializeInvokerClass(InvokerBytecodeGenerator.java:284) at java.lang.invoke.InvokerBytecodeGenerator.loadMethod(InvokerBytecodeGenerator.java:276) at java.lang.invoke.InvokerBytecodeGenerator.generateCustomizedCode(InvokerBytecodeGenerator.java:618) at java.lang.invoke.LambdaForm.compileToBytecode(LambdaForm.java:654) at java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:247) at java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:187) at java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:176) at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:83) at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:103) at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:108) at java.lang.invoke.LambdaForm$NamedFunction.resolve(LambdaForm.java:1078) at java.lang.invoke.DirectMethodHandle$Lazy.<clinit>(DirectMethodHandle.java:688) at java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:231) at java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:187) at java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:176) at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:83) at java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(MethodHandles.java:1656) at java.lang.invoke.MethodHandles$Lookup.getDirectMethod(MethodHandles.java:1601) at java.lang.invoke.MethodHandles$Lookup.findStatic(MethodHandles.java:778) at java.lang.invoke.BoundMethodHandle$Factory.makeCbmhCtor(BoundMethodHandle.java:817) at java.lang.invoke.BoundMethodHandle$Factory.makeCtors(BoundMethodHandle.java:772) at java.lang.invoke.BoundMethodHandle$SpeciesData.initForBootstrap(BoundMethodHandle.java:358) at java.lang.invoke.BoundMethodHandle$SpeciesData.<clinit>(BoundMethodHandle.java:447) at java.lang.invoke.BoundMethodHandle.<clinit>(BoundMethodHandle.java:829) at java.lang.invoke.LambdaForm.createIdentityForms(LambdaForm.java:1778) at java.lang.invoke.LambdaForm.<clinit>(LambdaForm.java:1833) at java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:222) at java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:187) at java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:176) at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:83) at java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(MethodHandles.java:1656) at java.lang.invoke.MethodHandles$Lookup.getDirectMethodNoSecurityManager(MethodHandles.java:1613) at java.lang.invoke.MethodHandles$Lookup.getDirectMethodForConstant(MethodHandles.java:1798) at java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1747) at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:477) at sun.security.util.AbstractAlgorithmConstraints.loadAlgorithmsMap(AbstractAlgorithmConstraints.java:50) at sun.security.util.AbstractAlgorithmConstraints.getAlgorithms(AbstractAlgorithmConstraints.java:79) at sun.security.util.DisabledAlgorithmConstraints.<init>(DisabledAlgorithmConstraints.java:77) at sun.security.ssl.SSLAlgorithmConstraints.<clinit>(SSLAlgorithmConstraints.java:50) at sun.security.ssl.ProtocolVersion.<clinit>(ProtocolVersion.java:114) at sun.security.ssl.SSLContextImpl$AbstractSSLContext.<clinit>(SSLContextImpl.java:453) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at java.security.Provider$Service.getImplClass(Provider.java:1634) at java.security.Provider$Service.newInstance(Provider.java:1592) at sun.security.jca.GetInstance.getInstance(GetInstance.java:236) at sun.security.jca.GetInstance.getInstance(GetInstance.java:164) at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1590) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) -- View this message in context: http://tomee-openejb.979440.n4.nabble.com/NullPointer-from-PersistenceUnitInfoImpl-when-running-in-Java-8-tp4676755.html Sent from the TomEE Dev mailing list archive at Nabble.com.