Another great idea.  Following this technique, the Java code executed
perfectly when called from Clojure. Time to check my configuration
again.  Thanks for the tip!

On May 5, 12:59 pm, Adrian Cuthbertson <adrian.cuthbert...@gmail.com>
wrote:
> Perhaps you could try calling your java class directly from the repl...
>
> (TutorialConnect1.)
>
> That might highlight the problem - your java stack strace might give
> some clues. It does sound like a classpath problem of some sort.
>
> Rgds, Adrian.
>
> On Tue, May 5, 2009 at 6:04 PM, Sean Devlin <francoisdev...@gmail.com> wrote:
>
> > That's a really good point, thanks for mentioning.  Unfortunately,
> > after looking into this, it's not the culprit.  The java code's
> > classpath is a _subset_ of the clojure code's classpath.  Also, the
> > DsrIPassport class doesn't exist.  It was depricated years ago...
>
> > The Clojure code appears to be initialized differently from the Java
> > code.
>
> > I'll try adding a dummy class, see if that works...
>
> > On May 5, 11:41 am, David Chamberlin <dawid...@googlemail.com> wrote:
> >> It sounds like you maybe haven't included all the necessary stuff in
> >> your classpath.
>
> >> If you are testing in REPL, then you need to include everything you
> >> need in the classpath the the invoked JVM, for example:
>
> >> java -classpath my-jar-file-containing-DsrlPassport.jar;clojure.jar
> >> clojure.main
>
> >> On 5 May, 15:54, Sean Devlin <francoisdev...@gmail.com> wrote:
>
> >> > Okay, I've got code that works in Java but I can't get working in
> >> > Clojure.  Here's the code in Java
>
> >> > public class TutorialConnect1 extends Object {
> >> >   JCO.Client mConnection;
> >> >   public TutorialConnect1() {
> >> >     try {
> >> >       // Change the logon information to your own system/user
> >> >       mConnection = JCO.createClient(...); //Connection parameters
> >> >       mConnection.connect();
> >> >       System.out.println(mConnection.getAttributes());
> >> >       mConnection.disconnect();
> >> >     }
> >> >     catch (Exception ex) {
> >> >       ex.printStackTrace();
> >> >       System.exit(1);
> >> >     }
> >> >   }
> >> >   public static void main (String args[]) {
> >> >     TutorialConnect1 app = new TutorialConnect1();
> >> >   }
>
> >> > }
>
> >> > It simply prints some connection attributes about my system.  Here's
> >> > the same code in Clojure
>
> >> > (let [sap-con (com.sap.mw.jco.JCO/createClient ... )] ;connection
> >> > attributes
> >> >                            (do
> >> >                              (. sap-con connect)
> >> >                              (println (. sap-con getAttributes))
> >> >                              (. sap-con disconnect)))
>
> >> > I can successfully create the connection object in Clojure, but I get
> >> > an error in the following s-exp
>
> >> > (. sap-con connect)
>
> >> > The error I get is :
>
> >> > #<CompilerException java.lang.NoClassDefFoundError: com/sap/jdsr/
> >> > writer/DsrIPassport (NO_SOURCE_FILE:0)>
>
> >> > The SAP library I'm using does rely on some native methods.  The only
> >> > guess I have right now is that the native methods are being linked to
> >> > properly.
>
> >> > Can anyone give me a hand?
>
> >> > Sean
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to