CodeRunner NoClassDefFoundError

Hello,

I have a simple program that I would like to run when a user registers. I can get it to run locally in Eclipse with just a simple static main and the 6 .jar dependencies. When I try to get it to run in CodeRunner however one of the jars doesnt parse correctly. CodeRunner appears to continue but its definitely not ‘working’. I downloaded the CodeRunner project from the code generation section.

Heres my CodeRunner log:

2016-08-04 17:01:59,327 [INFO] JDK from “JAVA_HOME” - C:\Program Files\Java\jdk1.8.0_101
2016-08-04 17:01:59,330 [INFO] JRE from “JRE_HOME” - C:\Program Files\Java\jre1.8.0_101
2016-08-04 17:01:59,513 [INFO] CodeRunner™ Backendless Debugging Utility
2016-08-04 17:01:59,514 [INFO] Copyright(C) 2016 Backendless Corp. All rights reserved.
2016-08-04 17:01:59,515 [INFO] Version: 3.0.20 Build date: 20160804-0334
2016-08-04 17:01:59,519 [INFO] CodeRunner session is running for 2 hours and will be terminated on 19:01:59.517[UTC]
2016-08-04 17:01:59,606 [INFO] Registering runner on: ‘https://api.backendless.com’ with version ‘v1’
2016-08-04 17:01:59,609 [INFO] Application ID: ‘XXXXX-XXXXX-XXXXX-XXXXX-XXXXXXXXXX’
2016-08-04 17:01:59,611 [INFO] Secret key: ‘XXXXX-XXXXX-XXXXX-XXXXX-XXXXX’
2016-08-04 17:02:00,467 [INFO] Runner successfully registered
2016-08-04 17:02:00,477 [INFO] Parsing event model…
2016-08-04 17:02:01,083 [ERROR] Error while parsing jar file E:\GitExtensions Repos\PowerMonitor\backendless code v2\PowerMonitor\bin..\repo\debug-tmp\retrofit-1.9.0.jar. org/apache/http/client/methods/HttpEntityEnclosingRequestBase
java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpEntityEnclosingRequestBase
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:814)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.backendless.coderunner.util.ServiceParser.findServiceClassesInDir(ServiceParser.java:65)
at com.backendless.coderunner.runtime.task.CustomServiceParserTask.parse(CustomServiceParserTask.java:80)
at com.backendless.coderunner.parser.HostedServiceParser.parseServiceModel(HostedServiceParser.java:51)
at com.backendless.coderunner.debugger.BusinessLogicDebugger.build(BusinessLogicDebugger.java:62)
at com.backendless.coderunner.debugger.InstructionsFetcher.executeCommandSafe(InstructionsFetcher.java:34)
at com.backendless.coderunner.LocalCodeRunner.start(LocalCodeRunner.java:56)
at com.backendless.coderunner.CodeRunnerLoader.launch(CodeRunnerLoader.java:42)
at com.backendless.coderunner.CodeRunnerLoader.main(CodeRunnerLoader.java:29)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpEntityEnclosingRequestBase
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 22 common frames omitted
2016-08-04 17:02:03,392 [INFO] Build successfully: 1 handler, 0 timers
2016-08-04 17:02:03,397 [INFO] Deploying model to server, and starting debug…
2016-08-04 17:02:03,654 [INFO] Model successfully deployed.
2016-08-04 17:02:03,654 [INFO] Waiting for events…
2016-08-04 17:02:05,906 [ERROR] null
2016-08-04 17:02:06,156 [INFO] Debugging Utility disconnected successfully
2016-08-04 17:02:06,157 [INFO] Thank you for using Backendless

I havent modified the runner.properties or done anything strange with the .jars like unpack them.

This works: locally just in Eclipse:
http://support.backendless.com/public/attachments/80565684c25d2ddb6d614a7e8b6f1d84.png</img>

This doesnt work when run locally through CodeRunner:
http://support.backendless.com/public/attachments/a723ff04864b624f521d5374c9e77928.png</img>

Thanks for the help, hopefully Im just doing something dumb :slight_smile:

Hi Mattew,
Seems like some dependent jars is missing. In current case it lacks org.apache.http.client library which can be downloaded from Maven https://mvnrepository.com/artifact/org.apache.httpcomponents.
Regards, Artur

I saw that, but if that were the case then why would it work on my desktop without directly referencing that jar? Also that jar doesnt show up on the maven dependencies for influxdb-java. Ill give that a try when im back at my computer and post a response.

Alright, I was able to get it to build after adding the http.client dependency and then the RxJava dependency. Now though when I actually trigger it I get an InvocationTargetException…

Heres the log:

E:\GitExtensions Repos\PowerMonitor\backendless code v2\PowerMonitor\bin>CodeRunner
Starting CodeRunner
Listening for transport dt_socket at address: 5005
[INFO] JDK from “JAVA_HOME” - C:\Program Files\Java\jdk1.8.0_101
[INFO] JRE from “JRE_HOME” - C:\Program Files\Java\jre1.8.0_101
[INFO] CodeRunner™ Backendless Debugging Utility
[INFO] Copyright© 2016 Backendless Corp. All rights reserved.
[INFO] Version: 3.0.20 Build date: 20160804-0334
[INFO] CodeRunner session is running for 2 hours and will be terminated on 18:16:06.350[UTC]

[INFO] Registering runner on: ‘https://api.backendless.com’ with version ‘v1’
[INFO] Application ID: ‘XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXXXXXXXXX’
[INFO] Secret key: ‘XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXXXXXXXXX’
[INFO] Runner successfully registered
[INFO] Parsing event model…
[INFO] Build successfully: 1 handler, 0 timers
[INFO] Deploying model to server, and starting debug…
[INFO] Model successfully deployed.
[INFO] Waiting for events…
START
Aug 05, 2016 4:16:39 PM com.backendless.coderunner.runtime.task.EventInvocationTask runImpl
SEVERE: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.backendless.coderunner.runtime.task.EventInvocationTask.runImpl(EventInvocationTask.java:113)
at com.backendless.coderunner.runtime.concurrent.ExtendedRunnable.run(ExtendedRunnable.java:26)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ExceptionInInitializerError
at retrofit.RestAdapter$Builder.ensureSaneDefaults(RestAdapter.java:688)
at retrofit.RestAdapter$Builder.build(RestAdapter.java:681)
at org.influxdb.impl.InfluxDBImpl.<init>(InfluxDBImpl.java:54)
at org.influxdb.InfluxDBFactory.connect(InfluxDBFactory.java:35)
at com.powermonitor.events.user_service.GenericUserEventHandler.afterRegister(GenericUserEventHandler.java:37)
… 7 more
Caused by: java.security.AccessControlException: access denied (“java.util.PropertyPermission” “com.google.appengine.runtime.version” “read”)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.backendless.coderunner.runtime.security.CodeRunnerSecurityManager.checkPermission(CodeRunnerSecurityManager.java:58)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294)
at java.lang.System.getProperty(System.java:717)
at retrofit.Platform.findPlatform(Platform.java:55)
at retrofit.Platform.<clinit>(Platform.java:38)
… 12 more

[ERROR] null
[INFO] Debugging Utility disconnected successfully
[INFO] Thank you for using Backendless
Terminate batch job (Y/N)?

Is this something I might be able to fix in the security.policy file? It does say ‘access denied’ down in there.

Thanks for the help again!

K Ive looked into this a bit more, and for the first time gotten my code to perform its task successfully running on Backendless! W00T! Theres a catch though… I did have to edit my security.policy file to add this:

permission java.util.PropertyPermission “com.google.appengine.runtime.version”, “read”;

After I added that permission I got the following error:

SEVERE: access denied (“java.lang.reflect.ReflectPermission” “newProxyInPackage.org.influxdb.impl”)

I found that one strange because there is already a line in the security.policy file that should allow that:

permission java.lang.reflect.ReflectPermission “suppressAccessChecks”;

So the only way I was able to get the code to run all the way through and work was by uncommenting the ‘permission java.security.AllPermission;’ line, which is obviously only a temporary fix. Anyone know how I can get rid of the java.lang.reflect.ReflectPermission issue? Heres my logs. The first shows the aforementioned error, then the second is where the code completes after uncommenting the AllPermission line.

E:\GitExtensions Repos\PowerMonitor\backendless code v2\PowerMonitor\bin>CodeRunner
Starting CodeRunner
Listening for transport dt_socket at address: 5005
[INFO] JDK from “JAVA_HOME” - C:\Program Files\Java\jdk1.8.0_101
[INFO] JRE from “JRE_HOME” - C:\Program Files\Java\jre1.8.0_101
[INFO] CodeRunner™ Backendless Debugging Utility
[INFO] Copyright© 2016 Backendless Corp. All rights reserved.
[INFO] Version: 3.0.20 Build date: 20160804-0334
[INFO] CodeRunner session is running for 2 hours and will be terminated on 18:49:58.562[UTC]

[INFO] Registering runner on: ‘https://api.backendless.com’ with version ‘v1’
[INFO] Application ID: ‘XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXXXXXXXXX’
[INFO] Secret key: ‘XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX’
[INFO] Runner successfully registered
[INFO] Parsing event model…
[INFO] Build successfully: 1 handler, 0 timers
[INFO] Deploying model to server, and starting debug…
[INFO] Model successfully deployed.
[INFO] Waiting for events…
START
Aug 07, 2016 4:50:14 PM com.backendless.coderunner.runtime.task.EventInvocationTask runImpl
SEVERE: access denied (“java.lang.reflect.ReflectPermission” “newProxyInPackage.org.influxdb.impl”)
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.backendless.coderunner.runtime.task.EventInvocationTask.runImpl(EventInvocationTask.java:113)
at com.backendless.coderunner.runtime.concurrent.ExtendedRunnable.run(ExtendedRunnable.java:26)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.security.AccessControlException: access denied (“java.lang.reflect.ReflectPermission” “newProxyInPackage.org.influxdb.impl”)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.backendless.coderunner.runtime.security.CodeRunnerSecurityManager.checkPermission(CodeRunnerSecurityManager.java:58)
at java.lang.reflect.Proxy.checkNewProxyPermission(Proxy.java:770)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:726)
at retrofit.RestAdapter.create(RestAdapter.java:194)
at org.influxdb.impl.InfluxDBImpl.<init>(InfluxDBImpl.java:55)
at org.influxdb.InfluxDBFactory.connect(InfluxDBFactory.java:35)
at com.powermonitor.events.user_service.GenericUserEventHandler.afterRegister(GenericUserEventHandler.java:37)
… 7 more

[ERROR] null
[INFO] Debugging Utility disconnected successfully
[INFO] Thank you for using Backendless
Terminate batch job (Y/N)? Y

E:\GitExtensions Repos\PowerMonitor\backendless code v2\PowerMonitor\bin>CodeRunner
Starting CodeRunner
Listening for transport dt_socket at address: 5005
[INFO] JDK from “JAVA_HOME” - C:\Program Files\Java\jdk1.8.0_101
[INFO] JRE from “JRE_HOME” - C:\Program Files\Java\jre1.8.0_101
[INFO] CodeRunner™ Backendless Debugging Utility
[INFO] Copyright© 2016 Backendless Corp. All rights reserved.
[INFO] Version: 3.0.20 Build date: 20160804-0334
[INFO] CodeRunner session is running for 2 hours and will be terminated on 18:51:57.342[UTC]

[INFO] Registering runner on: ‘https://api.backendless.com’ with version ‘v1’
[INFO] Application ID: ‘XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXXXXXXXXX’
[INFO] Secret key: ‘XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX’
[INFO] Runner successfully registered
[INFO] Parsing event model…
[INFO] Build successfully: 1 handler, 0 timers
[INFO] Deploying model to server, and starting debug…
[INFO] Model successfully deployed.
[INFO] Waiting for events…
START
END

Thanks for your help!

Hi @Matthew Monahan,
Won`t it be a trouble for you to send us your CBL project so that we can inspect the problem more precisely?
Please send to support@backendless.com
Artur

Just sent it, thanks!