On Mar 16, 2:45 pm, [EMAIL PROTECTED] (Greytrader) wrote: > On Mar 16, 2:21 pm, [EMAIL PROTECTED] (Greytrader) wrote: > > > I have been trying to get Inline Jave to work with JNI. I am using > > Inline Java .52 with MINGW and nmake. It seems to build fine but all > > the tests fail. Note that all tests pass without building with JNI. > > I am generating libjvm.a from jvm.dll with: dlltool --kill-at -dllname > > jvm.dll --def jvm.def --output-lib libjvm.a > > > Here is the build log with the tests output: > > > set PERL_INLINE_JAVA_JNI=1 > > C:\sylvaint\Inline-Java-0.52>perl Makefile.PL J2SDK=C:\jdk1.5.0_15 > > Set up gcc environment - 3.4.5 (mingw special) > > > Welcome to the Inline::Java installation procedure. > > > Default J2SDK for Inline::Java will be 'C:\jdk1.5.0_15'. > > See module documentation for information on how to use a different > > J2SDK > > or change this default value. > > > Checking if your kit is complete... > > Looks good > > > Inline::Java can use a JNI extension that allows the Java Virtual > > Machine > > (JVM) to be dynamically linked with Perl instead of running as a > > separate > > process. The use of this extension is optional, and building it still > > allows Inline::Java to run the JVM in the default (separate process) > > fashion. > > Note: You need a C compiler to build the extension. > > Note: You must build the extension if you wish to use PerlNatives or > > PerlInterpreter. > > Do you wish to build the JNI extension? [y] > > > Building JNI extension. > > > 1) C:\jdk1.5.0_15\jre\bin\client > > 2) C:\jdk1.5.0_15\jre\bin\server > > Please select from the above list which 'jvm.dll' to use: [1] > > > Building with: > > C:\jdk1.5.0_15\include\jni.h > > C:\jdk1.5.0_15\include\win32\jni_md.h > > C:\jdk1.5.0_15\lib\jvm.lib > > C:\jdk1.5.0_15\jre\bin\client\jvm.dll > > > Note: In order for Inline::Java to use the JNI extension, you will > > need to > > use the JNI configuration option or set the PERL_INLINE_JAVA_JNI > > environment > > variable to a true value. You will also need to add the following > > directories > > to your PATH environment variable: > > C:\jdk1.5.0_15\jre\bin\client > > C:\jdk1.5.0_15\jre\bin > > See README.JNI for more information. > > > The PerlNatives extension allows for callbacks to be defined as native > > Java methods. It is still EXPERIMENTAL and may not build or work > > properly > > on all platforms. See documentation for more details. > > Note: PerlNatives requires J2SDK 1.4 or greater. > > Do you wish to build the PerlNatives extension? [n] > > > The PerlInterpreter extension allows Inline::Java to be loaded > > directly from > > Java using an embedded Perl interpreter. It is still EXPERIMENTAL and > > may not build or work properly on all platforms. See documentation for > > more details. > > Do you wish to build the PerlInterpreter extension? [n] > > > Writing Makefile for Inline::Java::JNI > > Writing Makefile for Inline::Java > > > You can continue the installation with the following commands: > > % nmake > > % nmake test > > % nmake install > > > C:\sylvaint\Inline-Java-0.52>nmake > > > Microsoft (R) Program Maintenance Utility Version 1.50 > > Copyright (c) Microsoft Corp 1988-94. All rights reserved. > > > "C:\jdk1.5.0_15\bin\javac.exe" -deprecation -g -d Java\classes > > Java\sour > > ces\org\perl\inline\java\*.java > > Note: Some input files use unchecked or unsafe operations. > > Note: Recompile with -Xlint:unchecked for details. > > "C:\jdk1.5.0_15\bin\jar.exe" cf Java\InlineJavaServer.jar -C > > Java\classe > > s org -C Java\classes InlineJava.properties > > "C:\jdk1.5.0_15\bin\jar.exe" cf Java\InlineJavaUser.jar -C Java > > \classes > > InlineJavaUserClassLink.class > > cp Java.pm blib\lib\Inline\Java.pm > > cp Java.pod blib\lib\Inline\Java.pod > > cp Java\InlineJavaUser.jar blib\lib\Inline\Java\InlineJavaUser.jar > > cp Java\InlineJavaServer.jar blib\lib\Inline\Java\InlineJavaServer.jar > > nmake -f Makefile all -nologo > > cp sources\org\perl\inline\java/InlineJavaServerThread.java ..\blib\lib > > \Inline\J > > ava\sources\org\perl\inline\java\InlineJavaServerThread.java > > cp default_j2sdk.pl ..\blib\lib\Inline\Java\default_j2sdk.pl > > cp sources\org\perl\inline\java/InlineJavaPerlInterpreter.java ..\blib > > \lib\Inlin > > e\Java\sources\org\perl\inline\java\InlineJavaPerlInterpreter.java > > cp Protocol.pm ..\blib\lib\Inline\Java\Protocol.pm > > cp sources\org\perl\inline\java/InlineJavaCallbackQueue.java ..\blib > > \lib\Inline\ > > Java\sources\org\perl\inline\java\InlineJavaCallbackQueue.java > > cp Class.pm ..\blib\lib\Inline\Java\Class.pm > > cp sources\org\perl\inline\java/InlineJavaThrown.java ..\blib\lib > > \Inline\Java\so > > urces\org\perl\inline\java\InlineJavaThrown.java > > cp sources\org\perl\inline\java/InlineJavaProtocol.java ..\blib\lib > > \Inline\Java\ > > sources\org\perl\inline\java\InlineJavaProtocol.java > > cp sources\org\perl\inline\java/InlineJavaPerlObject.java ..\blib\lib > > \Inline\Jav > > a\sources\org\perl\inline\java\InlineJavaPerlObject.java > > cp sources\org\perl\inline\java/InlineJavaUserClassLink.java ..\blib > > \lib\Inline\ > > Java\sources\org\perl\inline\java\InlineJavaUserClassLink.java > > cp sources\org\perl\inline\java/InlineJavaException.java ..\blib\lib > > \Inline\Java > > \sources\org\perl\inline\java\InlineJavaException.java > > cp sources\org\perl\inline\java/InlineJavaArray.java ..\blib\lib\Inline > > \Java\sou > > rces\org\perl\inline\java\InlineJavaArray.java > > cp sources\org\perl\inline\java/ > > InlineJavaInvocationTargetException.java ..\blib > > \lib\Inline\Java\sources\org\perl\inline\java > > \InlineJavaInvocationTargetExceptio > > n.java > > cp sources\org\perl\inline\java/InlineJavaCallback.java ..\blib\lib > > \Inline\Java\ > > sources\org\perl\inline\java\InlineJavaCallback.java > > cp Callback.pod ..\blib\lib\Inline\Java\Callback.pod > > cp sources\org\perl\inline\java/InlineJavaClass.java ..\blib\lib\Inline > > \Java\sou > > rces\org\perl\inline\java\InlineJavaClass.java > > cp sources\org\perl\inline\java/InlineJavaPerlException.java ..\blib > > \lib\Inline\ > > Java\sources\org\perl\inline\java\InlineJavaPerlException.java > > cp JVM.pm ..\blib\lib\Inline\Java\JVM.pm > > cp sources\org\perl\inline\java/InlineJavaPerlNatives.java ..\blib\lib > > \Inline\Ja > > va\sources\org\perl\inline\java\InlineJavaPerlNatives.java > > cp Server.pm ..\blib\lib\Inline\Java\Server.pm > > cp sources\org\perl\inline\java/InlineJavaUserClassLoader.java ..\blib > > \lib\Inlin > > e\Java\sources\org\perl\inline\java\InlineJavaUserClassLoader.java > > cp Portable.pm ..\blib\lib\Inline\Java\Portable.pm > > cp Array.pm ..\blib\lib\Inline\Java\Array.pm > > cp sources\org\perl\inline\java/InlineJavaCastException.java ..\blib > > \lib\Inline\ > > Java\sources\org\perl\inline\java\InlineJavaCastException.java > > cp Handle.pm ..\blib\lib\Inline\Java\Handle.pm > > cp sources\org\perl\inline\java/InlineJavaServer.java ..\blib\lib > > \Inline\Java\so > > urces\org\perl\inline\java\InlineJavaServer.java > > cp sources\org\perl\inline\java/InlineJavaPerlCaller.java ..\blib\lib > > \Inline\Jav > > a\sources\org\perl\inline\java\InlineJavaPerlCaller.java > > cp Callback.pm ..\blib\lib\Inline\Java\Callback.pm > > cp Object.pm ..\blib\lib\Inline\Java\Object.pm > > cp sources\org\perl\inline\java/InlineJavaUtils.java ..\blib\lib\Inline > > \Java\sou > > rces\org\perl\inline\java\InlineJavaUtils.java > > cp sources\org\perl\inline\java/InlineJavaHandle.java ..\blib\lib > > \Inline\Java\so > > urces\org\perl\inline\java\InlineJavaHandle.java > > cp JNI.pm ..\blib\lib\Inline\Java\JNI.pm > > C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp -typemap C: > > \Perl\lib\E > > xtUtils\typemap -typemap typemap JNI.xs > JNI.xsc && C:\Perl\bin > > \perl.exe -MExt > > Utils::Command -e mv JNI.xsc JNI.c > > gcc -c "-IC:\jdk1.5.0_15\include" "-IC:\jdk1.5.0_15\include > > \win32" -DN > > DEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED - > > DUSE_SITE > > CUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT - > > DPERL_IMPLICIT_SYS -DUS > > E_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasing - > > O2 -DVERS > > ION=\"0.52\" -DXS_VERSION=\"0.52\" "-IC:\Perl\lib\CORE" JNI.c > > Running Mkbootstrap for Inline::Java::JNI () > > C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 JNI.bs > > C:\Perl\bin\perl.exe -MExtUtils::Mksymlists -e > > "Mksymlists('NAME'=>\"In > > line::Java::JNI\", 'DLBASE' => 'JNI', 'DL_FUNCS' => { }, 'FUNCLIST' > > => [], 'IMP > > ORTS' => { }, 'DL_VARS' => []);" > > Set up gcc environment - 3.4.5 (mingw special) > > dlltool --def JNI.def --output-exp dll.exp > > g++ -o ..\blib\arch\auto\Inline\Java\JNI\JNI.dll -Wl,--base- > > file -Wl,dll > > .base -mdll -L"C:\Perl\lib\CORE" JNI.o -Wl,--image-base,0x2e220000 C: > > \Perl\lib\ > > CORE\perl58.lib C:\jdk1.5.0_15\lib\libjvm.a C:\MinGW\lib\libkernel32.a > > C:\MinGW\ > > lib\libuser32.a C:\MinGW\lib\libgdi32.a C:\MinGW\lib\libwinspool.a C: > > \MinGW\lib\ > > libcomdlg32.a C:\MinGW\lib\libadvapi32.a C:\MinGW\lib\libshell32.a C: > > \MinGW\lib\ > > libole32.a C:\MinGW\lib\liboleaut32.a C:\MinGW\lib\libnetapi32.a C: > > \MinGW\lib\li > > buuid.a C:\MinGW\lib\libws2_32.a C:\MinGW\lib\libmpr.a C:\MinGW\lib > > \libwinmm.a C > > :\MinGW\lib\libversion.a C:\MinGW\lib\libodbc32.a C:\MinGW\lib > > \libodbccp32.a C:\ > > MinGW\lib\libmsvcrt.a dll.exp > > dlltool --def JNI.def --base-file dll.base --output-exp > > dll.exp > > g++ -o ..\blib\arch\auto\Inline\Java\JNI\JNI.dll -mdll -L"C: > > \Perl\lib\CO > > RE" JNI.o -Wl,--image-base,0x2e220000 C:\Perl\lib\CORE\perl58.lib C: > > \jdk1.5.0_1 > > 5\lib\libjvm.a C:\MinGW\lib\libkernel32.a C:\MinGW\lib\libuser32.a C: > > \MinGW\lib\ > > libgdi32.a C:\MinGW\lib\libwinspool.a C:\MinGW\lib\libcomdlg32.a C: > > \MinGW\lib\li > > badvapi32.a C:\MinGW\lib\libshell32.a C:\MinGW\lib\libole32.a C:\MinGW > > \lib\libol > > eaut32.a C:\MinGW\lib\libnetapi32.a C:\MinGW\lib\libuuid.a C:\MinGW\lib > > \libws2_3 > > 2.a C:\MinGW\lib\libmpr.a C:\MinGW\lib\libwinmm.a C:\MinGW\lib > > \libversion.a C:\M > > inGW\lib\libodbc32.a C:\MinGW\lib\libodbccp32.a C:\MinGW\lib > > \libmsvcrt.a dll.exp > > > C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 755 ..\blib > > \arch\auto\ > > Inline\Java\JNI\JNI.dll > > ... > > read more ยป
Here is the output of the first test with DEBUG = 5 C:\sylvaint\Inline-Java-0.52>perl -Mblib t/01_init.t 1..1 # Running under perl version 5.008008 for MSWin32 # Win32::BuildNumber 822 # Current time local: Wed Mar 19 13:35:52 2008 # Current time GMT: Wed Mar 19 19:35:52 2008 # Using Test.pm version 1.25 Set up gcc environment - 3.4.5 (mingw special) [perl][1] validate done. [perl][1] Starting load. [perl][4] portable: ENV_VAR_PATH_SEP_CP for MSWin32 is ';' [perl][4] portable: SUB_FIX_JAVA_PATH => C:\sylvaint\Inline- Java-0.52 for MSW in32 is default 'C:\sylvaint\Inline-Java-0.52' [perl][2] classpath candidate 'C:\jre1.5.0_15\lib\ext\QTJava.zip' scraped [perl][4] portable: SUB_FIX_JAVA_PATH => C:\Jts\Java for MSWin32 is default ' C:\Jts\Java' [perl][4] portable: SUB_FIX_JAVA_PATH => C:\sylvaint\Inline- Java-0.52\blib\li b\Inline\Java\InlineJavaServer.jar for MSWin32 is default 'C:\sylvaint \Inline-Ja va-0.52\blib\lib\Inline\Java\InlineJavaServer.jar' [perl][2] classpath: C:\sylvaint\Inline-Java-0.52;C:\Jts\Java;C: \sylvaint\Inlin e-Java-0.52\blib\lib\Inline\Java\InlineJavaServer.jar [perl][1] starting JVM... [perl][1] JNI mode [perl][1] JVM owner exiting... Can't create Java JVM using JNI at C:\sylvaint\Inline-Java-0.52\blib \lib/Inline/ Java/JVM.pm line 54. INIT failed--call queue aborted. [perl][1] killed by natural death. [perl][1] exiting with 2