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