[prev in list] [next in list] [prev in thread] [next in thread]
List: subversion-issues
Subject: [Issue 4443] New - New inner classes in javahl JNI interface are not handled correctly by javah from
From: centic () tigris ! org
Date: 2013-11-03 21:38:52
Message-ID: iz4443 () subversion ! tigris ! org
[Download RAW message or body]
http://subversion.tigris.org/issues/show_bug.cgi?id=4443
Issue #|4443
Summary|New inner classes in javahl JNI interface are not hand
|led correctly by javah from gcj
Component|subversion
Version|1.8.x
Platform|All
URL|
OS/Version|All
Status|NEW
Status whiteboard|
Keywords|
Resolution|
Issue type|DEFECT
Priority|P3
Subcomponent|bindings_javahl
Assigned to|issues@subversion
Reported by|centic
------- Additional comments from centic@tigris.org Sun Nov 3 14:38:52 -0700 2013 -------
Since 1.8 there is a new class VersionExtended.java in javahl which contains 4
inner classes, all of them contain native interfaces.
The usual steps for handling javahl Java->H generation seems to be to use
build/generator/gen_make.py to generate the build-outputs.mk file which then
contains all the necessary dependencies and calls. It seems gen_make.py
currently expects the inner classes to be automatically generated as part of
running javah on the outer class, as no special handling is implemented there.
However on Ubuntu Precise (12.04) when the build uses javah from gcj, I do not
get the .h files generated for the new inner classes.
I.e. the following call will generate only one .h, whereas the build expects
inner classes to be generated as well
$ /usr/lib/jvm/java-gcj/bin/javah -force -d subversion/bindings/javahl/include
-classpath subversion/bindings/javahl/classes:
org.apache.subversion.javahl.types.VersionExtended
With a different JDK, 4 additional header files will be generated.
$ /usr/lib/jvm/java-7-oracle/bin/javah -force -d
subversion/bindings/javahl/include -classpath
subversion/bindings/javahl/classes:
org.apache.subversion.javahl.types.VersionExtended
So it seems javah from gcj expects the inner classes to be specified
explicetely, when I specify them via
"org.apache.subversion.javahl.types.VersionExtended$LoadedLib" when calling
javah, the classes are generated successfully.
I tried with the following Java versions, only gcj did not generate them,
Sun/Oracle JDK seems to generate them in all recent major versions:
$ /usr/lib/jvm/java-gcj/bin/javah -version
javah (GNU Classpath) 0.98
=> No inner classes are generated
$ /usr/lib/jvm/java-7-oracle/bin/javah -version
javah version "1.7.0_45"
=> Inner classes are generated
$ /usr/lib/jvm/java-1.5.0-sun/bin/javah -version
javah version "1.5.0_19"
=> Inner classes are generated
$ /usr/lib/jvm/java-1.6.0-openjdk/bin/javah -version
javah version "1.6.0_27"
=> Inner classes are generated
$ /usr/lib/jvm/java-7-openjdk-amd64/bin/javah -version
javah version "1.7.0_25"
=> Inner classes are generated
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=463&dsMessageId=3067728
To unsubscribe from this discussion, e-mail: [issues-unsubscribe@subversion.tigris.org].
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic