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.