Skip to content

Instantly share code, notes, and snippets.

Created March 22, 2013 05:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/5219067 to your computer and use it in GitHub Desktop.
Save anonymous/5219067 to your computer and use it in GitHub Desktop.
Jruby external jar dependency not being found
user@mbpro (agent_branch)% echo $CLASSPATH ~/code/my_project
/Users/user/code/my_project/java/lib/matlabcontrol-4.0.0.jar
bijan@mbpro (cache_agent_trades)% jar tf matlabcontrol-4.0.0.jar
META-INF/MANIFEST.MF
matlabcontrol-info.html
matlabcontrol/extensions/MatlabTypeConverter$ArrayInfo.class
matlabcontrol/extensions/MatlabTypeConverter$GetArrayCallable.class
matlabcontrol/extensions/MatlabTypeConverter$SetArrayCallable.class
matlabcontrol/extensions/MatlabTypeConverter.class
matlabcontrol/extensions/MatlabTypeConverter.java
matlabcontrol/extensions/package-info.class
matlabcontrol/extensions/package-info.java
matlabcontrol/extensions/MatlabProxyLogger$1.class
matlabcontrol/extensions/MatlabProxyLogger$10.class
matlabcontrol/extensions/MatlabProxyLogger$11.class
matlabcontrol/extensions/MatlabProxyLogger$12.class
matlabcontrol/extensions/MatlabProxyLogger$13.class
matlabcontrol/extensions/MatlabProxyLogger$14.class
matlabcontrol/extensions/MatlabProxyLogger$15.class
matlabcontrol/extensions/MatlabProxyLogger$2.class
matlabcontrol/extensions/MatlabProxyLogger$3.class
matlabcontrol/extensions/MatlabProxyLogger$4.class
matlabcontrol/extensions/MatlabProxyLogger$5.class
matlabcontrol/extensions/MatlabProxyLogger$6.class
matlabcontrol/extensions/MatlabProxyLogger$7.class
matlabcontrol/extensions/MatlabProxyLogger$8.class
matlabcontrol/extensions/MatlabProxyLogger$9.class
matlabcontrol/extensions/MatlabProxyLogger$Invocation.class
matlabcontrol/extensions/MatlabProxyLogger$ReturnBooleanInvocation.class
matlabcontrol/extensions/MatlabProxyLogger$ReturnInvocation.class
matlabcontrol/extensions/MatlabProxyLogger$ReturnThrowingInvocation.class
matlabcontrol/extensions/MatlabProxyLogger$VoidInvocation.class
matlabcontrol/extensions/MatlabProxyLogger$VoidThrowingInvocation.class
matlabcontrol/extensions/MatlabProxyLogger.class
matlabcontrol/extensions/MatlabProxyLogger.java
matlabcontrol/extensions/MatlabNumericArray$ArrayDimensionException.class
matlabcontrol/extensions/MatlabNumericArray$DoubleArrayType.class
matlabcontrol/extensions/MatlabNumericArray.class
matlabcontrol/extensions/MatlabNumericArray.java
matlabcontrol/extensions/CallbackMatlabProxy$1.class
matlabcontrol/extensions/CallbackMatlabProxy$10.class
matlabcontrol/extensions/CallbackMatlabProxy$2.class
matlabcontrol/extensions/CallbackMatlabProxy$3.class
matlabcontrol/extensions/CallbackMatlabProxy$4.class
matlabcontrol/extensions/CallbackMatlabProxy$5.class
matlabcontrol/extensions/CallbackMatlabProxy$6.class
matlabcontrol/extensions/CallbackMatlabProxy$7.class
matlabcontrol/extensions/CallbackMatlabProxy$8.class
matlabcontrol/extensions/CallbackMatlabProxy$9.class
matlabcontrol/extensions/CallbackMatlabProxy$DaemonThreadFactory.class
matlabcontrol/extensions/CallbackMatlabProxy$MatlabCallback.class
matlabcontrol/extensions/CallbackMatlabProxy$MatlabDataCallback.class
matlabcontrol/extensions/CallbackMatlabProxy.class
matlabcontrol/extensions/CallbackMatlabProxy.java
matlabcontrol/internal/MatlabRMIClassLoaderSpi.class
matlabcontrol/internal/MatlabRMIClassLoaderSpi.java
matlabcontrol/MatlabProxyFactory$Request.class
matlabcontrol/MatlabProxyFactory$RequestCallback.class
matlabcontrol/MatlabProxyFactory.class
matlabcontrol/MatlabProxyFactory.java
matlabcontrol/ThrowableWrapper.class
matlabcontrol/ThrowableWrapper.java
matlabcontrol/MatlabClassLoaderHelper.class
matlabcontrol/MatlabClassLoaderHelper.java
matlabcontrol/PermissiveSecurityManager.class
matlabcontrol/PermissiveSecurityManager.java
matlabcontrol/MatlabProxy$DisconnectionListener.class
matlabcontrol/MatlabProxy$Identifier.class
matlabcontrol/MatlabProxy$MatlabThreadCallable.class
matlabcontrol/MatlabProxy$MatlabThreadProxy.class
matlabcontrol/MatlabProxy.class
matlabcontrol/MatlabProxy.java
matlabcontrol/MatlabBroadcaster$1.class
matlabcontrol/MatlabBroadcaster.class
matlabcontrol/MatlabBroadcaster.java
matlabcontrol/ProxyFactory.class
matlabcontrol/ProxyFactory.java
matlabcontrol/RequestReceiver.class
matlabcontrol/RequestReceiver.java
matlabcontrol/JMIWrapperRemoteImpl.class
matlabcontrol/JMIWrapperRemoteImpl.java
matlabcontrol/MatlabConnectionException.class
matlabcontrol/MatlabConnectionException.java
matlabcontrol/LocalMatlabProxyFactory$LocalIdentifier.class
matlabcontrol/LocalMatlabProxyFactory$LocalRequest.class
matlabcontrol/LocalMatlabProxyFactory.class
matlabcontrol/LocalMatlabProxyFactory.java
matlabcontrol/JMIWrapper$1.class
matlabcontrol/JMIWrapper$2.class
matlabcontrol/JMIWrapper$3.class
matlabcontrol/JMIWrapper$4.class
matlabcontrol/JMIWrapper$5.class
matlabcontrol/JMIWrapper$6.class
matlabcontrol/JMIWrapper$7.class
matlabcontrol/JMIWrapper$8.class
matlabcontrol/JMIWrapper$MatlabReturn.class
matlabcontrol/JMIWrapper$MatlabThreadProxyImpl.class
matlabcontrol/JMIWrapper.class
matlabcontrol/JMIWrapper.java
matlabcontrol/JMIWrapperRemote.class
matlabcontrol/JMIWrapperRemote.java
matlabcontrol/RemoteMatlabProxy$1.class
matlabcontrol/RemoteMatlabProxy$2.class
matlabcontrol/RemoteMatlabProxy$3.class
matlabcontrol/RemoteMatlabProxy$4.class
matlabcontrol/RemoteMatlabProxy$5.class
matlabcontrol/RemoteMatlabProxy$6.class
matlabcontrol/RemoteMatlabProxy$7.class
matlabcontrol/RemoteMatlabProxy$8.class
matlabcontrol/RemoteMatlabProxy$CheckConnectionTask.class
matlabcontrol/RemoteMatlabProxy$RemoteInvocation.class
matlabcontrol/RemoteMatlabProxy.class
matlabcontrol/RemoteMatlabProxy.java
matlabcontrol/LocalHostRMIHelper$LocalHostRMISocketFactory.class
matlabcontrol/LocalHostRMIHelper$LocalHostRemoteObject.class
matlabcontrol/LocalHostRMIHelper.class
matlabcontrol/LocalHostRMIHelper.java
matlabcontrol/JMIValidator.class
matlabcontrol/JMIValidator.java
matlabcontrol/MatlabSessionImpl.class
matlabcontrol/MatlabSessionImpl.java
matlabcontrol/package-info.class
matlabcontrol/package-info.java
matlabcontrol/Configuration.class
matlabcontrol/Configuration.java
matlabcontrol/MatlabSession.class
matlabcontrol/MatlabSession.java
matlabcontrol/LocalMatlabProxy.class
matlabcontrol/LocalMatlabProxy.java
matlabcontrol/MatlabInteractor.class
matlabcontrol/MatlabInteractor.java
matlabcontrol/MatlabConnector$EstablishConnectionRunnable.class
matlabcontrol/MatlabConnector$ModifyCodebaseCallable.class
matlabcontrol/MatlabConnector.class
matlabcontrol/MatlabConnector.java
matlabcontrol/MatlabInvocationException$Reason.class
matlabcontrol/MatlabInvocationException.class
matlabcontrol/MatlabInvocationException.java
matlabcontrol/RemoteMatlabProxyFactory$GetProxyRequestCallback.class
matlabcontrol/RemoteMatlabProxyFactory$ProcessStreamDrainer.class
matlabcontrol/RemoteMatlabProxyFactory$RemoteIdentifier.class
matlabcontrol/RemoteMatlabProxyFactory$RemoteRequest.class
matlabcontrol/RemoteMatlabProxyFactory$RemoteRequestReceiver.class
matlabcontrol/RemoteMatlabProxyFactory.class
matlabcontrol/RemoteMatlabProxyFactory.java
matlabcontrol/MatlabProxyFactoryOptions$Builder.class
matlabcontrol/MatlabProxyFactoryOptions.class
matlabcontrol/MatlabProxyFactoryOptions.java
irb(main):081:0> $CLASSPATH
=> ["file:/Users/user/code/my_project/java/lib/matlabcontrol-4.0.0.jar""file:/Users/user/code/my_project/java/classes/"]
irb(main):007:0> java_import 'main.program.Matlab'
NameError: cannot link Java class main.program.Matlab, probable missing dependency: matlabcontrol/MatlabInvocationException
from org/jruby/javasupport/JavaClass.java:1227:in `for_name'
from org/jruby/javasupport/JavaUtilities.java:34:in `get_proxy_class'
from file:/Users/user/.rbenv/versions/jruby-1.7.3/lib/jruby.jar!/jruby/java/core_ext/object.rb:26:in `java_import'
from org/jruby/RubyArray.java:2361:in `map'
from file:/Users/user/.rbenv/versions/jruby-1.7.3/lib/jruby.jar!/jruby/java/core_ext/object.rb:22:in `java_import'
from (irb):7:in `evaluate'
from org/jruby/RubyKernel.java:1066:in `eval'
from org/jruby/RubyKernel.java:1409:in `loop'
from org/jruby/RubyKernel.java:1174:in `catch'
from org/jruby/RubyKernel.java:1174:in `catch'
from /Users/user/.rbenv/versions/jruby-1.7.3/bin/jirb:13:in `(root)'
irb(main):008:0> java_import 'main.agent_optimization.Main'
=> [Java::MainAgent_optimization::Main]
irb(main):009:0> Main.test
=> "called from java"
irb(main):010:0> Main.testWD
=> #<Java::Matlabcontrol::MatlabProxyFactory:0x686cf054>
irb(main):011:0> Main.testWD2
Java::JavaLang::NoClassDefFoundError: matlabcontrol/MatlabInvocationException
from main.agent_optimization.Main.testWD2(Unknown Source)
from sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
from sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
from sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
from java.lang.reflect.Method.invoke(Method.java:601)
from org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:440)
from org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:362)
from org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:50)
from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
from org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:64)
from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
from org.jruby.ast.RootNode.interpret(RootNode.java:129)
from org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:96)
from org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:175)
from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1103)
... 119 levels...
from org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
from org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
from org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
from org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:188)
from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
from Users.user.$_dot_rbenv.versions.jruby_minus_1_dot_7_dot_3.bin.jirb.__file__(/Users/user/.rbenv/versions/jruby-1.7.3/bin/jirb:13)
from Users.user.$_dot_rbenv.versions.jruby_minus_1_dot_7_dot_3.bin.jirb.load(/Users/user/.rbenv/versions/jruby-1.7.3/bin/jirb)
from org.jruby.Ruby.runScript(Ruby.java:815)
from org.jruby.Ruby.runScript(Ruby.java:808)
from org.jruby.Ruby.runNormally(Ruby.java:679)
from org.jruby.Ruby.runFromMain(Ruby.java:528)
from org.jruby.Main.doRunFromMain(Main.java:390)
from org.jruby.Main.internalRun(Main.java:279)
from org.jruby.Main.run(Main.java:221)
from org.jruby.Main.main(Main.java:201)irb(main):012:0>
package main.program;
import java.util.LinkedList;
import matlabcontrol.*;
import matlabcontrol.extensions.*;
public class Matlab
{
private static boolean cVerbose = false;
private static boolean cInitialized = false;
private static MatlabProxyFactory cFactory;
private static MatlabProxy mProxy;
private static MatlabTypeConverter mProcessor;
public static MatlabProxyFactory getFactory () { return cFactory; }
public static MatlabTypeConverter getProcessor() { return mProcessor; }
public static MatlabProxy getProxy () { return mProxy; }
public static void initialize()
{
try
{
MatlabProxyFactoryOptions options
= new MatlabProxyFactoryOptions
.Builder()
.setHidden(true)
.setProxyTimeout(60000L)
.setUsePreviouslyControlledSession(true)
.build();
cFactory = new MatlabProxyFactory(options);
mProxy = cFactory.getProxy();
mProcessor = new MatlabTypeConverter(mProxy);
mProxy.eval("clear;");
}
catch (MatlabConnectionException e) { throw new RuntimeException(e); }
catch (MatlabInvocationException e) { throw new RuntimeException(e); }
}
...
}
package main.program;
import java.util.HashMap;
import java.util.LinkedList;
import matlabcontrol.MatlabInvocationException;
import matlabcontrol.MatlabConnectionException;
import matlabcontrol.MatlabProxy;
import matlabcontrol.MatlabProxyFactory;
import matlabcontrol.MatlabProxyFactoryOptions;
import main.program.Matlab;
import org.joda.time.DateTime;
public class Program
{
private LinkedList<Instrument> instruments;
private static int mComponentCounter = 0;
public static String test() {
return "called form java class";
}
public static MatlabProxyFactory testWD() {
MatlabProxyFactoryOptions options
= new MatlabProxyFactoryOptions
.Builder()
.setHidden(true)
.setProxyTimeout(60000L)
.setUsePreviouslyControlledSession(true)
.build();
return new MatlabProxyFactory(options);
}
public static void testWD2() {
Matlab.initialize();
Matlab.disconnect();
System.out.println("disconnected");
System.exit(0);
}
...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment