Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0001064 [Resin] minor always 04-20-06 06:45 04-11-07 08:57
Reporter sam View Status public  
Assigned To ferg
Priority high Resolution fixed  
Status closed   Product Version 3.0.18
Summary 0001064: IBM JDK 1.5 missing jvmdi.h
Description (rep by B Bothwell)

Hi, we recently started up development again using Resin
(resin-pro-3.0.18), and wanted to use IBM's 1.5 JDK due to its increased
performance over the Sun JDK (I confirmed this with simple benchmarks
myself). However, I am unable to get Resin to compile with IBM's JDK
(ibm-java2-i386-sdk-5.0-1.0) due to some missing JNI library files.

The error with make is:

jni_vfs.c:81:19: error: jvmdi.h: No such file or directory
make[2]: *** [jni_vfs.o] Error 1

The IBM JDK include files are here:

/opt/ibm/java2-i386-50/include/:
jawt.h jawt_md.h jdwpTransport.h jni.h jniport.h jvmpi.h jvmras.h
jvmri.h jvmti.h linux

/opt/ibm/java2-i386-50/include/linux:
jawt.h jawt_md.h jdwpTransport.h jni.h jniport.h jvmpi.h jvmras.h
jvmri.h jvmti.h linux

Note that the jvmdi.h is missing. I installed and configured the Sun
1.5 JDK, and it has the missing file:

/usr/java/jdk1.5.0_06/include/:
jawt.h jdwpTransport.h jni.h jvmdi.h jvmpi.h jvmti.h linux

/usr/java/jdk1.5.0_06/include/linux:
jawt_md.h jni_md.h

I am not sure why IBM doesn't include this file in their 1.5 JDK (they
include it with their older JDKs, inclusing 1.3 and 1.4)

I was able to get the JNI modules to compile in Resin by linking to the
Sun JDK files, but I wasn't sure if this was a good idea to run Resin
under one JDK when it was compiled against another. I also didn't want
to copy over the missing jvmdi.h from another JDK, as this might lead to
other problems.

Here are the compile errors I get:

[root@waldorf resin]# ./configure --enable-jni
--with-jni-include="-I/opt/ibm/java2-i386-50/include
-I/opt/ibm/java2-i386-50/include/linux"
    [/config output cut for brevity, but no errors/warnings occur/]

[root@waldorf resin]# make
(cd modules/c/src; make)
make[1]: Entering directory `/usr/local/resin-pro-3.0.18/modules/c/src'
for dir in common resin resinssl resin_os resin_os; do (cd $dir; make); done
make[2]: Entering directory
`/usr/local/resin-pro-3.0.18/modules/c/src/common'
gcc -c -I/usr/include -g -O2 -DPOLL -DHAS_JVMTI stream.c
gcc -c -I/usr/include -g -O2 -DPOLL -DHAS_JVMTI config.c
gcc -c -I/usr/include -g -O2 -DPOLL -DHAS_JVMTI memory.c
/usr/bin/ld -r -o common.o stream.o config.o memory.o
/usr/local/resin/libtool --silent --mode=compile gcc -o stream.lo -c
-I/usr/include -g -O2 -DPOLL -DHAS_JVMTI stream.c
/usr/local/resin/libtool --silent --mode=compile gcc -o config.lo -c
-I/usr/include -g -O2 -DPOLL -DHAS_JVMTI config.c
/usr/local/resin/libtool --silent --mode=compile gcc -o memory.lo -c
-I/usr/include -g -O2 -DPOLL -DHAS_JVMTI memory.c
make[2]: Leaving directory
`/usr/local/resin-pro-3.0.18/modules/c/src/common'
make[2]: Entering directory
`/usr/local/resin-pro-3.0.18/modules/c/src/resin'
gcc -g -O2 -DPOLL -DHAS_JVMTI -DRESIN_HOME=\"/usr/local/resin\"
-I/usr/include -I/opt/ibm/java2-i386-50/include
-I/opt/ibm/java2-i386-50/include/linux -I../common -DCPU=\"i386\" -DOS=
-D_FILE_OFFSET_BITS=64 -c -o std.o std.c
gcc -g -O2 -DPOLL -DHAS_JVMTI -DRESIN_HOME=\"/usr/local/resin\"
-I/usr/include -I/opt/ibm/java2-i386-50/include
-I/opt/ibm/java2-i386-50/include/linux -I../common -DCPU=\"i386\" -DOS=
-D_FILE_OFFSET_BITS=64 -c -o memory.o memory.c
gcc -g -O2 -DPOLL -DHAS_JVMTI -DRESIN_HOME=\"/usr/local/resin\"
-I/usr/include -I/opt/ibm/java2-i386-50/include
-I/opt/ibm/java2-i386-50/include/linux -I../common -DCPU=\"i386\" -DOS=
-D_FILE_OFFSET_BITS=64 -c -o jni_vfs.o jni_vfs.c
jni_vfs.c:81:19: error: jvmdi.h: No such file or directory
make[2]: *** [jni_vfs.o] Error 1
Additional Information
Attached Files

- Relationships

- Notes
(0001094)
sam
04-20-06 11:08

(rep by J Woolf)

This may shed some light. As JVMDI is being deprecated, perhaps the
engineers at IBM made the switch early.

http://java.sun.com/j2se/1.5.0/docs/guide/jpda/index.html [^]
 
(0001835)
sam
04-11-07 08:57

The jvmdi.h files is also not available with Java 6.
As a workaround, lines which include jvmdi.h and cause compilation errors can be removed from the C source files.

The lines look like this:

#include "jvmdi.h"
 

- Issue History
Date Modified Username Field Change
04-20-06 06:45 sam New Issue
04-20-06 06:45 sam Priority normal => high
04-20-06 11:08 sam Note Added: 0001094
04-20-06 11:10 anonymous Note Added: 0001095
04-20-06 11:10 anonymous Note Deleted: 0001095
04-21-06 05:03 bbothwell Issue Monitored: bbothwell
05-19-06 13:09 ferg Assigned To  => ferg
05-19-06 13:09 ferg Status new => closed
05-19-06 13:09 ferg Resolution open => fixed
05-19-06 13:09 ferg Fixed in Version  => 3.0.19
09-21-06 06:57 Lucien Issue Monitored: Lucien
04-11-07 08:57 sam Note Added: 0001835


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
37 total queries executed.
29 unique queries executed.
Powered by Mantis Bugtracker