[jsword-devel] NullPointer in JSword, at runtime using the maven dependency

Chris Burrell christopher at burrell.me.uk
Mon Apr 19 14:23:22 MST 2010


Oh, and I meant to ask...

Have you made any note-worthy changes to the pom?

Chris

On 18 April 2010 17:31, Chris Burrell <christopher at burrell.me.uk> wrote:

> Ok, so here's an answer to this weird problem... As DM said, it seemed to
> be a classpath issue, but then since NetUtils is being executed, at least
> part of the jar file is being found. And the maven output shows it's on the
> path.
>
> But here's what is happening:
> - My Maven repository is located on Windows under c:\Documents and
> Settings\username\.m2
>
> The following method in NetUtils returns a null because a
> URISyntaxException is being caught
>     public static URI toURI(URL url) {
>         try {
>             return new URI(url.toExternalForm());
>         } catch (URISyntaxException e) {
>             return null;
>         }
>     }
>
> Now the reason for that is "Illegal character in opaque part at index 22:
> jar:file:/C:/Documents and"
>
> That character is a space character. It seems the toExternalForm() method
> doesn't like the space. Perhaps because the space should probably be a %20?
> (haven't tried that).
>
> My quick workaround is to do as suggested on this post:
> http://www.mail-archive.com/users@maven.apache.org/msg84160.html and
> rewrite my Maven settings.xml so that the local repository is at
> c:\Docume~1\username\.m2
>
> A better solution would be to do the following to test whether we can pass
> a URL encoded form to the URL object above (I assume that will have quite a
> lot of impact so we'd need to test this quite a bit)
>
> Also perhaps some logging of the exception would be nice.
> I assume people will have the same problem if they happen to install Bible
> Desktop at c:\bible desktop\ because of the space (but again haven't tested)
>
> Happy to try and create a patch for it, or not.
> Cheers
> Chris :)
>
>
>
>
>
> On 18 April 2010 01:43, DM Smith <dmsmith at crosswire.org> wrote:
>
>> I'm not to familiar with maven, but I don't think I checked in the latest
>> poms.
>>
>> I'm not clear as to why it would get a ClassDefNotFoundError. That sounds
>> like a class path error.
>>
>> -- DM
>>
>> On Apr 17, 2010, at 1:50 PM, Chris Burrell wrote:
>>
>> Hi
>>
>> I'm trying to get my project to compile/run against the JSword POM. I'm
>> hitting a couple of issues (which might be related)
>>
>> 1st: mvn clean install fails to retrieve a dependency, which is not very
>> helpful. However it does seem  to build common and JSword properly. I posted
>> a message recently on this, but there was no feedback?
>>
>> 2nd, when trying to use it to install some bible versions, I get a
>> ClassDefNotFoundError which is due to a NullPointerException in NetUtil
>> class.
>>
>> It seems that we're not forming a proper URL from:
>>             URL index = ResourceUtil.getResource(ReadingsBookDriver.class,
>> "readings.txt"); //$NON-NLS-1$
>>
>> I'm not familiar with what the correct behaviour should be. I've checked
>> that JAR that the Maven plugin builds, and readings.txt does indeed exist.
>> Does anyone have any ideas?
>>
>> This only happens through Maven when I run my packaged jar. When I run
>> this through Eclipse it seems fine, which sounded to me like it be a
>> dependency issue, but I can't figure our what the problem is...
>> Any ideas anyone?
>> Cheers,
>> Chris
>>
>>
>> Output from Maven:
>> [DEBUG] Collected project classpath
>> [D:\temp\release_final_test\step-dataloader\target\classes]
>> [DEBUG] Adding to classpath :
>> file:/D:/temp/release_final_test/step-dataloader/target/classes/
>> [DEBUG] Adding project dependency artifact: jsword to classpath
>> [DEBUG] Adding project dependency artifact: log4j to classpath
>> [DEBUG] Adding project dependency artifact: jsword-common to classpath
>> [DEBUG] Adding project dependency artifact: commons-codec to classpath
>> [DEBUG] Adding project dependency artifact: commons-httpclient to
>> classpath
>> [DEBUG] Adding project dependency artifact: commons-logging to classpath
>> [DEBUG] Adding project dependency artifact: commons-net to classpath
>> [DEBUG] Adding project dependency artifact: oro to classpath
>> [DEBUG] Adding project dependency artifact: javatar to classpath
>> [DEBUG] Adding project dependency artifact: jdom to classpath
>> [DEBUG] Adding project dependency artifact: lucene-core to classpath
>> [DEBUG] Adding project dependency artifact: lucene-snowball to classpath
>> [DEBUG] Adding project dependency artifact: lucene-smartcn to classpath
>> [DEBUG] Adding project dependency artifact: lucene-analyzers to classpath
>> [DEBUG] Adding project dependency artifact: commons-dbutils to classpath
>> [DEBUG] Adding project dependency artifact: commons-io to classpath
>> [DEBUG] Adding project dependency artifact: commons-lang to classpath
>> [DEBUG] Adding project dependency artifact: opencsv to classpath
>> [DEBUG] Adding project dependency artifact: derbyclient to classpath
>> [DEBUG] Adding project dependency artifact: derby to classpath
>> [DEBUG] joining on thread
>> Thread[com.tyndalehouse.step.dataloader.Dataloader.main(),5,com.tyndalehouse.step.dataloader.Dataloader]
>> [DEBUG] Setting accessibility to true in order to invoke main().
>> Using connection string: jdbc:derby:C:\Documents and
>> Settings\CJBurrell/TyndaleStep/StepDB;create=true
>> 0    [com.tyndalehouse.step.dataloader.Dataloader.main()] WARN
>>  com.tyndalehouse.step.dataloader.loaders.JSwordModuleInstaller  - Creating
>> new installer for JSw
>> ord
>> Currently hardcoded installer host to:www.crosswire.org
>> Currently hardcoded property names for step
>> Setting to (www.crosswire.org via 10.154.1.44:8080)
>> Setting package and catalog directories
>> 641  [com.tyndalehouse.step.dataloader.Dataloader.main()] INFO
>>  com.tyndalehouse.step.dataloader.loaders.JSwordModuleInstaller  -
>> installing ESV
>> [INFO]
>> ------------------------------------------------------------------------
>> [ERROR] BUILD ERROR
>> [INFO]
>> ------------------------------------------------------------------------
>> [INFO] An exception occured while executing the Java class. null
>>
>> [INFO]
>> ------------------------------------------------------------------------
>> [DEBUG] Trace
>> org.apache.maven.lifecycle.LifecycleExecutionException: An exception
>> occured while executing the Java class. null
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
>>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
>>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
>>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
>>         at
>> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at
>> org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>>         at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>>         at
>> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>>         at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
>> Caused by: org.apache.maven.plugin.MojoExecutionException: An exception
>> occured while executing the Java class. null
>>         at
>> org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:338)
>>         at
>> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
>>         at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
>>         ... 17 more
>> Caused by: java.lang.reflect.InvocationTargetException
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at
>> org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
>>         at java.lang.Thread.run(Thread.java:619)
>> *Caused by: java.lang.ExceptionInInitializerError*
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at org.crosswire.jsword.book.Books.autoRegister(Books.java:426)
>>         at org.crosswire.jsword.book.Books.initialize(Books.java:407)
>>         at org.crosswire.jsword.book.Books.<init>(Books.java:59)
>>         at org.crosswire.jsword.book.Books.<clinit>(Books.java:473)
>>         at
>> com.tyndalehouse.step.dataloader.loaders.JSwordModuleInstaller.installBible(JSwordModuleInstaller.java:46)
>>         at
>> com.tyndalehouse.step.dataloader.loaders.JSwordModuleInstaller.installDefaultModules(JSwordModuleInstaller.java:33)
>>         at
>> com.tyndalehouse.step.dataloader.Dataloader.main(Dataloader.java:33)
>>         ... 6 more
>> *Caused by: java.lang.NullPointerException*
>>         at
>> org.crosswire.common.util.NetUtil.getInputStream(NetUtil.java:415)
>>         at
>> org.crosswire.common.util.NetUtil.listByIndexFile(NetUtil.java:544)
>>         at *
>> org.crosswire.jsword.book.readings.ReadingsBookDriver.getInstalledReadingsSets(ReadingsBookDriver.java:91)
>> *
>>         at
>> org.crosswire.jsword.book.readings.ReadingsBookDriver.<init>(ReadingsBookDriver.java:50)
>>         at
>> org.crosswire.jsword.book.readings.ReadingsBookDriver.<clinit>(ReadingsBookDriver.java:119)
>>
>>
>> my dependencies:
>> <dependency> <groupId>org.crosswire</groupId>
>> <artifactId>jsword</artifactId> <version>1.6.1-SNAPSHOT</version>
>> </dependency>
>>
>> My plugin to run the jar:
>>
>> <plugins>
>> <plugin>
>>  <groupId>org.codehaus.mojo</groupId>
>> <artifactId>exec-maven-plugin</artifactId>
>> <configuration>
>>  <mainClass>com.tyndalehouse.step.dataloader.Dataloader</mainClass>
>> <systemProperties>
>> <systemProperty>
>>  <key>db.location</key>
>> <value>${db.directory}</value>
>> </systemProperty>
>>  <systemProperty>
>> <key>step.http.proxy</key>
>> <value>${step.http.proxy}</value>
>>  </systemProperty>
>> <systemProperty>
>> <key>step.http.port</key>
>>  <value>${step.http.port}</value>
>> </systemProperty>
>> </systemProperties>
>>  <classpathScope>runtime</classpathScope>
>> </configuration>
>> </plugin>
>>
>>
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20100419/a50cc536/attachment-0001.html>


More information about the jsword-devel mailing list