Hi guys,

Sorry but I can't help you out here since I don't have access to a Mac OS X 
machine (as a matter of fact I have never even used one...).

I don't know about the JNI bit, but the default client/server should
be able to work.

Tim, in your first post you were almost there, having problems only
with the tests that fork themselves to connect to a "shared" JVM. I
noticed that you sometimes ran into errors like this:

   Can't locate object method "new" via package "t10::t10" ...

Normally these sorts of errors happen when Inline::Java died and the
cache file that contains the information about the Java class is
incomplete/empty. If you remove the Inline directory (in this case
_Inline_test), you should see the "real" error pop up again. I don't
know about the "Bad file descriptor" error though...

Anyways if you need more info on how things work or if you come up
with a patch that I can include (maybe Andy's is ok as is?), just let
me know.

Thanks,

Patrick

On 9/1/05, Andrew Bruno <[EMAIL PROTECTED]> wrote:
> Hi,
> 
> I recently ran into the same troubles with Mac OSX.  I'm completely new to
> Inline::Java and not very comfortable with the internals but with a little
> tinkerning I was able to get it working. Not sure if this is the right way but
> attached is a patch file.
> 
> In short, I added some more defaults into Portable.pm for darwin and in
> Java/Makefile.PL I had to change the call to find(..) which passed in
> follow => 1 to follow_fast => 1 because of the symlinks.
> 
> Then just ran:
> 
> perl perl Makefile.PL
> J2SDK=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
> make java
> make
> make test
> make install
> 
> Well, hope this might be of some help.
> 
> --Andy
> 
> On Thu, Sep 01, 2005 at 10:49:41PM +0100, Tim Bunce wrote:
> > On Tue, Aug 30, 2005 at 05:18:45PM -0500, [EMAIL PROTECTED] wrote:
> > >
> > > > From: Tim Bunce [mailto:[EMAIL PROTECTED]
> > > >
> > > > Can't locate file 'libjvm.bundle' anywhere under
> > > > '/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home'
> > > > Writing Makefile for Inline::Java
> > >
> > > [...]
> > >
> > > > make[1]: Makefile: No such file or directory
> > > > make[1]: *** No rule to make target `Makefile'.  Stop.
> > > > make: *** [subdirs] Error 2
> > > >
> > > > Any ideas?
> > >
> > > Ordinarily a Makefile will be created in both the top-level directory
> > > and the Java/ directory.  I think it bombed out when trying to create
> > > one or the other.
> >
> > The make failed because the Java/Makefile.PL exits 'successfully' but
> > without creating a Makefile after printing the "Can't locate ..." warning.
> >
> > > Looking on my office Mac (OS X 10.4.2), I see three libjvm files, none
> > > of which is "libjvm.bundle":
> > >
> > > /System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Libraries/libjvm.dylib
> > > /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libjvm.dylib
> > > /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libjvm_compat.dylib
> > >
> > > So I think:
> > >
> > >   a) Perhaps it should be looking for "libjvm.$Config{so}" instead of 
> > > "libjvm.$Config{dlext}".
> > >
> > >   b) It probably *still* won't find it, so either it needs to be able to
> > > look in other directories besides those under $J2SDK, or you'll have to
> > > create a symlink from somewhere under $J2SDK to
> > > /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Libraries/
> > >  or something.
> > >
> > > Note that I'm not speaking from the point of view of someone who's
> > > actually got this working - I'm just speculating, since last time I
> > > tried this I was on 10.3, and I never got it working that time either.
> >
> > Now I come to look again I've made some progress with your help. Thanks!
> >
> > I've added a symlink in .../Home/lib/libjvm.dylib -> 
> > ../../Libraries/libjvm.dylib
> > (libjvm.dylib is itself a symlink to libhotspot.dylib) and added
> >       JVM_LIB  => "libjvm.$Config{so}",
> >       JVM_SO   => "libjvm.$Config{so}",
> > into the darwin section of Java/Portable.pm
> >
> > The linker command line now looks like:
> >
> >  
> > LD_RUN_PATH="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/lib"
> >  env MACOSX_DEPLOYMENT_TARGET=10.3 cc  -bundle -undefined dynamic_lookup
> >  -L/usr/local/lib -L/opt/local/lib JNI.o  -o 
> > ../blib/arch/auto/Inline/Java/JNI/JNI.dylib
> >  -L/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/lib 
> > -ljvm
> >
> > and otool -L blib/arch/auto/Inline/Java/JNI/JNI.dylib says:
> >
> >   blib/arch/auto/Inline/Java/JNI/JNI.dylib:
> >         
> > /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libhotspot.dylib
> >  (compatibility version 1.0.0, current version 1.0.0)
> >         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
> > version 88.0.0)
> >
> > but the tests still fail with:
> >
> > t/01_init..............dyld: NSLinkModule() error dyld: Symbol not found: 
> > _JNI_CreateJavaVM
> >   Referenced from: 
> > /Users/timbo/.cpan/sources/authors/id/P/PA/PATL/Inline-Java-0.50/blib/arch/auto/Inline/Java/JNI/JNI.bundle
> >   Expected in: dynamic lookup
> >
> > I don't have sufficient OSX Foo to know what to try next.
> > Is the _JNI_CreateJavaVM entrypoint in some other library?
> > (grep -l -a -r _JNI_CreateJavaVM ... only finds it in that one.)
> >
> > Any ideas?
> >
> > Tim.
> 
> 
> 


-- 
=====================
Patrick LeBoutillier
Laval, Québec, Canada

Reply via email to