Next question for help in Java packaging: beast-mcmc
Hi,
when dealing with phylogenie related programs I found several Java based
programs up for packaging. I've got FigTree close to ready - just one
JAR (iText PDF library) is up for isolation of binary JAR into separate
package (will be topic of another mail soonish). For the package
beast-mcmc[1] I worked hard to get all just packaged stuff out but several
remained. Unfortunately this program is a bit more complex so I need
another helping hand. For FigTree (my package source is available at [2]
including the needed java libraries which are just in Debian new queue)
I used
dh $@ --with javahelper
with debian/figtree.manifest which was determining the CLASSPATH for the
executable jar. I considered this way as quite useful and would like to
try it for beast-mcmc as well (even if it is no real request - any other
way would be welcome for sure). The problem is that the beast-mcmc
package contains more than one package and I'm afraid I did not
correctly interpreted the debian/manifest syntax for this case. For
those who would be kind enough to have a look I uploaded the source to
http://people.debian.org/~tille/packages/beast-mcmc-help-wanted/
(it's also in SVN[3]). To build the package you will need all debs
from [2] (the figtree classes are used here as well - that's the reason
whe I moved the figtree jar to /usr/share/java). The package builds
fine - however, the binary finally fails because of an obviously wrong
set CLASSPATH. I tried hard but failed to approch this and I even tried
to patch the small wrapper scripts. For the GUI I always get:
$ beauti
Exception in thread "main" java.lang.NoClassDefFoundError: jam/framework/MultiDocApplication
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Caused by: java.lang.ClassNotFoundException: jam.framework.MultiDocApplication
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 11 more
Could not find the main class: dr.app.beauti.BeautiApp. Program will exit.
This worked nicely as long as I used the jam.jar which was included in
the beast-mcmc SVN checkout. Once I stripped this in favour of the
Debian package in new[2] it is not found any more in the final jar
binary (but builds nicely after patching build.xml).
Any hint how to get a working package would be welcome
Andreas.
[1] http://beast.bio.ed.ac.uk/
[2] http://people.debian.org/~tille/packages/figtree-help-wanted/
[3] svn://svn.debian.org/svn/debian-med/trunk/packages/beast-mcmc/trunk/
--
http://fam-tille.de
Reply to: