[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: