Re: Beginner Eclipse problem

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

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

    It doesn't contain a Main-Class entry. I am assuming that the way to
    determine what's in the manifest is 'jar -tf Quickstart.jar'....

    I had Eclipse generate the manifest, and I specified the name of the main
    class, which contains the main() method.

    Denise

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

    > Does Manifest.mf in Quickstart.jar contain a Main-Class: entry. What is it?
    > The Main-Class: should contain a class name that implements the main method
    > (public static void main(String[] args)...). Or you will need to add
    > Quickstart.jar to your classpath and specify the name of your "main" class.
    >
    > J.R.
    > -----Original Message-----
    > From: Denise Howard [mailto:dhoward@pgp.com]
    > Sent: Tuesday, September 28, 2004 1:10 PM
    > To: JR Ruggentaler; Jason Dwyer; woproject-dev@objectstyle.org
    > Subject: 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:
    >
    > 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:50:42 EDT