Re: Beginner Eclipse problem

From: Denise Howard (dhowar..gp.com)
Date: Tue Sep 28 2004 - 14:09:54 EDT

  • Next message: Denise Howard: "Re: Beginner Eclipse problem"

    OK thanks, that will help a bunch.

    Before I get to the point of delivering the application jar elsewhere, I
    still need to figure out why I can't make it happy from the command line.
    Here's my invocation:

    java -cp
    /Library/WebObjects/Extensions/axis.jar:/Library/WebObjects/Extensions/axis-
    ant.jar:/Library/WebObjects/Extensions/avalon-framework-4.1.2.jar:/Library/W
    ebObjects/Extensions/logkit-1.0.1.jar:/Library/WebObjects/Extensions/log4j-1
    .2.8.jar:/Library/WebObjects/Extensions/commons-logging.jar:/Library/WebObje
    cts/Extensions/jaxrpc.jar:/Library/WebObjects/Extensions/commons-discovery.j
    ar:/Library/WebObjects/Extensions/saaj.jar:/Library/WebObjects/Extensions/ws
    dl4j.jar -jar Quickstart.jar

    And here's the resulting error:

    Exception in thread "main" java.lang.NoClassDefFoundError:
    org/apache/axis/AxisFault

    AxisFault is defined in axis.jar, which is certainly included in the
    classpath. So why isn't it being found?

    Denise

    On 9/28/04 10:58 AM, "JR Ruggentaler" <JR.Ruggentaler@mpv.com> wrote:

    > Like most native and Java applications your application requires some
    > supporting libraries (jars), you may want to package your dependant libraries
    > and your application in a directory. Some developers use a common convention
    > like having a libs directory in a path relative to the location of their
    > application. They then distribute the application and it's supporting
    > libraries as a zip or tar or some format that works best on the target
    > platform. With this type of a setup the relative paths I described earlier
    > would work given your requirements. Apple/NextStep application use similar
    > strategies by having EO models, resources and other directories within the
    > applications directory. I believe the old NextStep Installer used tar zipped
    > files called packages to distribute apps.
    >
    > To simplify put your app and any supporting files/libraries in a directory and
    > zip up all the file in the directory. Your app Manifest.mf file should point
    > to the relative location of you Axis runtime libraries and any other libraries
    > it requires. The user would unzip the files and should be able to launch you
    > app by clicking on it. BTW: this is how Eclipse is distributed on MS Windows,
    > don't know if it's the same on OS X.
    >
    > J.R.
    >
    > -----Original Message-----
    > From: Denise Howard [mailto:dhoward@pgp.com]
    > Sent: Tuesday, September 28, 2004 12:31 PM
    > To: JR Ruggentaler; Jason Dwyer; woproject-dev@objectstyle.org
    > Subject: Re: Beginner Eclipse problem
    >
    >
    > Thanks for the suggestions, guys, but this doesn't quite solve my problem.
    > If I'm on an OS X machine and my boss--who will be using the application jar
    > I create--is on a Windows machine, the classpaths will be entirely
    > different. Not only that but he will not have Axis installed, so he won't
    > have any of those necessary jars. How do I create an application jar that
    > 1) I can run outside of Eclipse, and 2) I can hand off to someone in a
    > different environment to use? They shouldn't have to install anything other
    > than my application jar.
    >
    > Denise
    >
    >
    > On 9/28/04 7:11 AM, "JR Ruggentaler" <JR.Ruggentaler@mpv.com> wrote:
    >
    >> Jars can also include a "CLASSPATH" in the Manifest.mf with relative or fixed
    >> paths, for example:
    >> Class-Path: ../libs/activation.jar ../libs/classes111.zip
    >>
    >> Using Class-Path and Main-Class allows the application when packaged as a jar
    >> to be launchable by clicking the jar on MS Windows and probably other OSs.
    >> See
    >> the JDK Docs on Jars for complete explanation.
    >>
    >> -----Original Message-----
    >> From: Jason Dwyer [mailto:Jason.Dwyer@redata.com.au]
    >> Sent: Tuesday, September 28, 2004 2:55 AM
    >> To: woproject-dev@objectstyle.org; dhoward@pgp.com
    >> Subject: Re: Beginner Eclipse problem
    >>
    >>
    >> hi denise,
    >>
    >> theres a number of ways to include the relevant jars into your
    >> classpath, its not an eclipse issue per se, as much as it is part and
    >> parcel of any java app which relies on multiple libraries
    >>
    >> probably the cleanest method will be to write an ant target which
    >> invokes java.
    >>
    >> another would be to write a short shell command which sets up a local
    >> variable to hold a list of jars.
    >>
    >> put this into a file called starter.sh: (or whatever)
    >>
    >> #!/bin/sh
    >> for i in $1/*.jar; do
    >> export MYPATH=$MYPATH:$i
    >> done
    >>
    >> java -cp $MYPATH $2
    >>
    >> ====cut here===
    >> ensure its executable (chmod 755 starter.sh)
    >>
    >> then invoke with 2 parameters:
    >>
    >> ./starter.sh <path_to_libs_dir> <fully_qualified_java_class>
    >>
    >> i've assumed your java libraries (jars) for the project are in one local
    >> directory, which you pass in as the first arg. if not, its a good
    >> practice: makes it easier to keep track of which libs ( and versions of
    >> libs) you are using.
    >>
    >> still, probably better to look into ant to manage all this for you.
    >>
    >> .. and while its possible to 'merge' the contents of jars into your own
    >> application's jar, you really dont want to be doing that...
    >>
    >> regards,
    >>
    >> j.dwyer
    >> redata software systems
    >>
    >>
    >>
    >> On Tue, 2004-09-28 at 12:20, Denise Howard wrote:
    >>> I hope this is a quick and easy one. I'm running Eclipse 3.0.1 on Mac OS X
    >>> 10.3.5. In Eclipse I can run my plain Java application to my heart's
    >>> content. It happens to use Apache Axis, so all those Axis jars are in the
    >>> build path.
    >>>
    >>> Then I use Eclipse to create a jar file for my application, and from the
    >>> command line I try to run the jar, and right off the bat I get a
    >>> "NoClassDefFoundError" for one of the Axis classes. Spelling out the
    >>> classpath (I copied and pasted from Eclipse's command line inspector so I
    >>> know they're all spelled and punctuated correctly) made no difference.
    >>>
    >>> What am I doing wrong? The Eclipse help system is wonderful but I couldn't
    >>> find quite the solution in it for this. Is there a way to have Eclipse
    >>> "copy" external jars (such as these Axis ones) into my application jar so
    >>> that I can hand it to someone who doesn't have Axis installed and it will
    >>> run for them (similar to the "merge" in Xcode)?
    >>>
    >>> Thanks--
    >>>
    >>> Denise
    >>>
    >>>
    >>>
    >>> ________________________________________________________________
    >>> This message could have been secured by PGP Universal. To secure
    >>> future messages from this sender, please click this link:
    >>>
    >>> woproject-dev@objectstyle.org">https://keys.pgp.com/b/b.e?r=woproject-dev@objectstyle.org
    >>>
    >
    >
    >
    > ________________________________________________________________
    > This message could have been secured by PGP Universal. To secure
    > future messages from this sender, please click this link:
    >
    > JR.Ruggentaler@mpv.com">https://keys.pgp.com/b/b.e?r=JR.Ruggentaler@mpv.com
    >

    ________________________________________________________________
    This message could have been secured by PGP Universal. To secure
    future messages from this sender, please click this link:

    woproject-dev@objectstyle.org">https://keys.pgp.com/b/b.e?r=woproject-dev@objectstyle.org



    This archive was generated by hypermail 2.0.0 : Tue Sep 28 2004 - 14:10:22 EDT