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