Your stacktrace is not long enough to find out the exact cause.
Also, your <javahOS>Solaris</javahOS> is wrong, it should be
<javahOS>solaris</javahOS>
-Dan
On 6/21/06, TimHedger <[EMAIL PROTECTED]> wrote:
I'm trying to build using the mojo native plugin and to build a jni file
from
a compiled class.
In my existing build process this is the command I use:
/usr/java1.4.1_02_32/bin/javah -jni -classpath
/home/hedgert/work/javautil/classes -o
/home/hedgert/work/javautil/gen/rbos/fm/mktrisk/sql/BcpBase.h
rbos.fm.mktrisk.sql.BcpBase
I've configured maven and the plugin and this is the command it shows it
executes in the debug output:
[INFO] /usr/java1.4.1_02_32/jre/../bin/javah -d
/home/hedgert/maven/javabcp/target/native/javah -classpath
/home/hedgert/.m2/repository/rbos/fm/mktrisk/javabcpbase/1.0-SNAPSHOT/javabcpbase-
1.0-SNAPSHOT.jar
rbos.fm.mktrisk.sql.BcpBase
It's almost the same; the -jni option is missing and instead of specifying
an output file with -o, this specifies an output directory (-d) which
means
that the filename is different (in my build I get BcpBase.h, from the
maven
build command I get rbos_fm_mktrisk_sql_BcpBase.h.
The main point is when I run the maven produced command by hand (even
though
the options are slightly different) I do get a .h file produced as an
output
(and the command exits with a zero return code).
But maven isn't happy - this is (an extract from) the maven output:
...
[INFO] snapshot
org.codehaus.mojo.natives:maven-native-manager:1.0-alpha-1-SNAPSHOT:
checking for updates from Maven Snapshots
[INFO] snapshot
org.codehaus.mojo.natives:maven-native-manager:1.0-alpha-1-SNAPSHOT:
checking for updates from snapshots
[INFO] [native:javah {execution: javah}]
[INFO] /usr/java1.4.1_02_32/jre/../bin/javah -d
/home/hedgert/maven/javabcp/target/native/javah -classpath
/home/hedgert/.m2/repository/rbos/fm/mktrisk/javabcpbase/1.0-SNAPSHOT/javabcpbase-
1.0-SNAPSHOT.jar
rbos.fm.mktrisk.sql.BcpBase
[INFO] [native:compile]
[INFO]
------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO]
------------------------------------------------------------------------
[INFO] null
[INFO]
------------------------------------------------------------------------
[INFO] Trace
java.lang.NullPointerException
at
org.codehaus.mojo.natives.NativeSources.appendSourceList(
NativeSources.java:106)
at
org.codehaus.mojo.natives.NativeSources.getAllSourceFiles(
NativeSources.java:155)
...
I'm not sure why the plugin isn't happy and blows up - can you help?
This is the pom file I'm using (which was derived from the example file on
the plugin web site):
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>rbos.fm.mktrisk</groupId>
<artifactId>javabcp</artifactId>
<packaging>so</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>rbos.fm.mktrisk</groupId>
<artifactId>javabcpbase</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--add other native libs to be linked in-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<compilerProvider>generic</compilerProvider>
<compilerStartOptions>
<compilerStartOption>-Dsun_svr4=1
-DSOLARIS</compilerStartOption>
</compilerStartOptions>
<javahOS>Solaris</javahOS>
<sources>
<source>
<directory></directory>
<fileNames>
<fileName>exutils.c</fileName>
<fileName>Blk.c</fileName>
</fileNames>
</source>
<!-- additional include path
(source)(directory)xx(/directory)</source)-->
<!-- additional system include path -->
<source>
<directory> /home/hedgert/work/javautil/include </directory>
<directory>
/opt/sybaseSW/sybase12.5/OCS-12_0/sample/dblibrary </directory>
<dependencyAnalysisParticipation>false</dependencyAnalysisParticipation>
</source>
</sources>
<!-- deploy the accompany .lib file as well -->
<linkerSecondaryOuputExtensions>so</linkerSecondaryOuputExtensions >
<linkerStartOptions>
<linkerStartOption> -G -lblk -lct -lcs -ltcl -lcomn -lintl
-Bdynamic -lnsl -ldl -lm </linkerStartOption>
</linkerStartOptions>
</configuration>
<!-- Generate JNI header files based on a list of class name on
the
classpath -->
<!-- The generated include directory is automatically added to
include path at compile phase -->
<!-- Ensure to have appropriate denpendency jar file(s) in your
pom
-->
<executions>
<execution>
<id>javah</id>
<phase>generate-sources</phase>
<configuration>
<classNames>
<className>rbos.fm.mktrisk.sql.BcpBase</className>
</classNames>
<!--
| Note:
| 1. Without classNames, javah mojo will search for all
JNI classes
| in your dependency list.
-->
</configuration>
<goals>
<goal>javah</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
NB I'm aware I'm using the mojo native plugin, I'd be very happy to use
the
standard one, but I can't find similar configuration/documentation
information that I'd need to get my example up and running. Any
suggestions
much appreciated.
--
View this message in context:
http://www.nabble.com/Can%27t-get-jni-working-based-on-example-configuration-t1825144.html#a4978401
Sent from the Maven - Users forum at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]