Re: Problems starting Maven based WOApplication in WOLips 3.4.5503 on Windows XP

From: Henrique Prange (hprang..mail.com)
Date: Thu Oct 16 2008 - 18:30:17 EDT

  • Next message: Lachlan Deck: "Re: WOLips maven-wolifecycle-plugin bug?"

    Hi Lars,

    Henrique Prange wrote:
    >
    > Above is the complete...

    Below. :p

    Cheers,

    Henrique
    >
    > 16-May-2008 09:13 AM Henrique Prange:
    > * SUMMARY
    > WebObjects applications cannot be initialized on Windows using a path
    > with spaces. The problem occurs because of a bug in the NSBundle class.
    >
    > I understand Apple doesn't support the development of WebObjects
    > applications in Windows anymore. But this problem also affects the
    > application developed on Mac but deployed on a Windows machine (i.e. WO
    > app package as WAR running on Tomcat in Windows). This scenario is valid
    > and should be supported. Besides, the known workaround cannot be always
    > applied.
    >
    > This is an old known bug and the solution is simple.
    >
    > * STEPS TO REPRODUCE
    >
    > On development environment:
    >
    > 1. Install the WebObjects libraries into a path with spaces: i.e.
    > "C:\Documents and
    > Settings\Username\.m2\repository\com\apple\webobjects\JavaFoundation\5.4.1"
    > 2. Create a simple project using Eclipse/WOLips.
    > 3. Run the application.
    >
    > On deployment environment:
    >
    > 1. Create a simple WO app.
    > 2. Package it as true WAR.
    > 3. Deploy the app on Tomcat installed in a path with spaces: i.e.
    > C:\Program Files\Tomcat.
    > 4. Start Tomcat and see the log for the error.
    >
    > * RESULTS
    >
    > The following exception is thrown while trying to start the app:
    >
    > [2008-5-16 12:9:35 EDT] <main> Unable to locate the "JavaWebObjects" bundle
    > [2008-5-16 12:9:35 EDT] <main> Unable to initialize WOProperties for
    > reason: Cannot find JavaWebObjects framework !
    > java.lang.IllegalStateException: Unable to locate the "JavaWebObjects"
    > bundle
    > [2008-5-16 12:9:35 EDT] <main> A fatal exception occurred:
    > <WOApplication>: Cannot be initialized.
    > [2008-5-16 12:9:35 EDT] <main>
    > com.webobjects.foundation.NSForwardException
    > [java.lang.IllegalStateException] Unable to locate the "JavaWebObjects"
    > bundle:<WOApplication>: Cannot be initialized.
    > at
    > com.webobjects.appserver.WOApplication.<init>(WOApplication.java:912)
    > at er.extensions.ERXAjaxApplication.<init>(ERXAjaxApplication.java:20)
    > at er.extensions.ERXApplication.<init>(ERXApplication.java:753)
    > at moleque.sicc.app.Application.<init>(Application.java:13)
    > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
    > Method)
    > at
    > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    >
    > at
    > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    >
    > at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    > at java.lang.Class.newInstance0(Class.java:355)
    > at java.lang.Class.newInstance(Class.java:308)
    > at com.webobjects.appserver.WOApplication.main(WOApplication.java:546)
    > at er.extensions.ERXApplication.main(ERXApplication.java:454)
    > at moleque.sicc.app.Application.main(Application.java:10)
    > Caused by: java.lang.IllegalStateException: Unable to locate the
    > "JavaWebObjects" bundle
    > at
    > com.webobjects.appserver._private.WOProperties.initUserDefaultsKeys(WOProperties.java:394)
    >
    > at
    > com.webobjects.appserver.WOApplication._initWOApp(WOApplication.java:5690)
    > at
    > com.webobjects.appserver.WOApplication.<init>(WOApplication.java:773)
    > ... 12 more
    >
    > * REGRESSION
    > It happens in all versions of Windows.
    > I have verified the same behavior in WO 5.3.x and 5.2.x.
    > If the path doesn't have spaces, the application works (this is the
    > workaround).
    >
    > * NOTES
    > This problem occurs because of a conversion from URL to String in the
    > NSBundle class. The Java URLDecoder class could be used to solve this
    > problem. Below is a possible fix that could be done on
    > __exctractStringFromURL private method of NSBundle:
    >
    > String urlPath = URLDecoder.decode( anURL.getPath(), "UTF-8" );
    >
    > Cheers,
    >
    > Henrique
    >
    > Lars Sonchocky-Helldorf wrote:
    >>
    >> Am 15.10.2008 um 22:25 schrieb Lachlan Deck:
    >>
    >>> On 16/10/2008, at 2:30 AM, Lars Sonchocky-Helldorf wrote:
    >>>
    >>>> Am 15.10.2008 um 16:04 schrieb Lachlan Deck:
    >>>>
    >>>>> On 15/10/2008, at 10:51 AM, Lars Sonchocky-Helldorf wrote:
    >>>>>
    >>>>>> when trying to launch a Maven based WOApplication inside Eclipse
    >>>>>> 3.4 / WOLips 3.4.5503 on a Windows XP machine which HASN'T
    >>>>>> WebObjects installed at first I got some null pointer exception
    >>>>>> which had something to do with not being able to read certain
    >>>>>> environment variables (I had a stacktrace on it inside the error
    >>>>>> log view in Eclipse but my co-worker did hit the clear button when
    >>>>>> trying to work the problem out while I was at lunch :-(
    >>>>>
    >>>>> :-)
    >>>
    >>> Just to clarify, how was this working for you before? What's changed?
    >>
    >> Don't ask … ;-)
    >>
    >> before another co-worker of mine was developing the project on
    >> Leopard. Now he is bussy with something else and we got a freshman who
    >> should take over the project. My boss assigned the freshman a Windows
    >> PC as workstation, and I am the one to get the project started there.
    >> So basically what's changed is the OS the project is developed on.
    >>
    >>>
    >>>>> All this is doing is looking for the JavaWebObjects bundle having
    >>>>> been already loaded during started. i.e., it's calling
    >>>>> NSBundle.bundleForName("JavaWebObjects") which in turn looks up an
    >>>>> NSDictionary and is getting null in return... so it decides to
    >>>>> throws an error.
    >>>>>
    >>>>>> What makes me wonder is that even when launching a Maven based
    >>>>>> WOApplication a static WO installation seems to be required and
    >>>>>> referred (environment variables).
    >>>>>
    >>>>> I don't believe that's true.
    >>>>
    >>>> hmm, at least the NPE in the Eclipse WOApps launcher went away after
    >>>> setting the NEXT_ROOT env for the first time. This could - of course
    >>>> - be completely unrelated.
    >>>
    >>> Okay. What was the stack trace of the NPE beforehand?
    >>
    >> that is the famous stacktrace that got lost when my co-worked cleared
    >> the error log in eclipse.
    >>
    >>>
    >>>>>> Shouldn't it work out of the box without any WO installed at the
    >>>>>> machine at all (and loading all the dependencies from the local
    >>>>>> .m2/repository instead)
    >>>>>
    >>>>
    >>>> Our project structure looks like this:
    >>>
    >>> Cool. Sorry - had to eliminate the obvious.
    >>>
    >>>> and the project builds now (after switching to the 2.0.16-SNAPSHOT
    >>>> version of maven-wolifecycle-plugin like Henrique suggested.)
    >>>
    >>> Okay. Great. So if you from TankDiskAll do
    >>> $ mvn clean package
    >>>
    >>> What do classpath.properties, classpath.txt, and wobuild.properties
    >>> look like in TankDiskAdmin/target?
    >>
    >> like this:
    >>
    >>
    >> ------------------------------------------------------------------------
    >>
    >>
    >>
    >>
    >>
    >>>
    >>>> But the exception during the launch attempt remains …
    >>>
    >>> hmm. In your LaunchConfig for your app, on the Source tab do you see
    >>> under the expanded Default all the jars and project dependencies you
    >>> expect?
    >>
    >>
    >> looks quite good (see screenshot below)
    >>
    >>
    >>
    >>>
    >>> Running within WOLips has some differences in that it does (perhaps
    >>> did... I haven't tested with more recent nightlies to see if this is
    >>> really still needed) have some dependencies on what it builds into
    >>> project/build/YourProject.[woa|framework].
    >>>
    >>> So my launchconfig for one of my apps looks like this:<Picture 1.png>
    >>
    >>
    >> and mine looks like this:
    >>
    >>
    >>
    >>
    >>
    >>
    >> ------------------------------------------------------------------------
    >>
    >>
    >>
    >>
    >>>
    >>>
    >>>
    >>> You might want to have a look at what settings you've inherited from
    >>> WOlips prefs in the WO tab of your launchconfig for the app. By
    >>> default these are all ticked in WOLips prefs. I usually untick most
    >>> of them except the ones that actually make sense to set manually. So
    >>> you might need to play with these.<Picture 2.png>
    >>
    >>
    >> I tried several variations here - which had no influence at all at the
    >> exception during startup.
    >>
    >>
    >>
    >>
    >>
    >>
    >>
    >> =======================================================================================
    >>
    >>
    >>
    >>
    >>
    >>
    >>
    >>
    >> Now I decided to dig deeper and have some additional notes for you (of
    >> which I hope those might give you a clue on what's going on)
    >>
    >>
    >>
    >>
    >>
    >> * I use the Q4E Eclipse PlugIn for Maven stuff inside Eclipse:
    >> http://code.google.com/p/q4e/
    >> http://q4e.googlecode.com/svn/trunk/updatesite/ this plugin is
    >> responsible for creating the Maven Classpath Container
    >>
    >>
    >>
    >> * I found out that something/someone (the co-worker who developed the
    >> project before when trying to help the freshman?) added the following
    >> classpath variables in Eclipse:
    >>
    >>
    >>
    >>
    >> ------------------------------------------------------------------------
    >>
    >>
    >>
    >>
    >>
    >>
    >> * I installed jad/jadclipse and fired up the debugger on the startup
    >> exception. Here are my findings (sit down comfortable, it's a looong
    >> story):
    >>
    >> The main cause, as we found out, seems to be the difference between
    >> jar files and Mac OS X bundles. look at the following code (which a
    >> little jad gave me):
    >>
    >>
    >> WOResourceManager:
    >>
    >> public static InputStream
    >> __getJavaWebObjectsResourceAsStream(String name) throws
    >> IllegalStateException {
    >> /* 113*/ InputStream is = null;
    >>
    >> /* 115*/ String errorCause = "";
    >> /* 116*/ NSBundle aFrameworkBundle =
    >> NSBundle.bundleForName("JavaWebObjects");
    >> /* 117*/ if(aFrameworkBundle != null) {
    >> /* 118*/ String aUserDefaultsKeysPath =
    >> aFrameworkBundle.resourcePathForLocalizedResourceNamed(name, "");
    >> /* 119*/ if(aUserDefaultsKeysPath != null) {
    >> /* 120*/ is =
    >> aFrameworkBundle.inputStreamForResourcePath(aUserDefaultsKeysPath);
    >> } else {
    >> /* 122*/ errorCause = (new
    >> StringBuilder()).append("Unable to locate
    >> \"").append(name).append("\"").toString();
    >> /* 123*/ is =
    >> com/webobjects/appserver/WOResourceManager.getClassLoader().getResourceAsStream((new
    >> StringBuilder())
    >>
    >> .append("com/webobjects/appserver/").append(name).toString());
    >> }
    >> } else {
    >> /* 126*/ errorCause = "Unable to locate the
    >> \"JavaWebObjects\" bundle";
    >> /* 127*/ is =
    >> com/webobjects/appserver/WOResourceManager.getClassLoader().getResourceAsStream((new
    >> StringBuilder())
    >>
    >> .append("com/webobjects/appserver/").append(name).toString());
    >> }
    >> /* 129*/ if(is == null) {
    >> /* 130*/ NSLog.err.appendln((new
    >> StringBuilder()).append("<WOResourceManager>
    >> ").append(errorCause).toString());
    >> /* 131*/ throw new IllegalStateException(errorCause);
    >> } else {
    >> /* 133*/ return is;
    >> }
    >> }
    >>
    >>
    >> in line 116 NSBundle.bundleForName("JavaWebObjects"); fails because in
    >> line 527 BundlesNamesTable was empty: {}
    >>
    >> NSBundle:
    >>
    >> public static synchronized NSBundle bundleForName(String
    >> aName) {
    >> /* <-MISALIGNED-> */ /* 516*/ NSBundle bundle = null;
    >> /* <-MISALIGNED-> */ /* 518*/ if(aName != null) {
    >> String fixedName;
    >> /* <-MISALIGNED-> */ /* 521*/ if(aName.endsWith(".framework"))
    >> /* <-MISALIGNED-> */ /* 522*/ fixedName =
    >> NSPathUtilities.stringByDeletingPathExtension(aName);
    >> /* <-MISALIGNED-> */ /* 524*/ else
    >> /* <-MISALIGNED-> */ /* 524*/ fixedName = aName;
    >> /* <-MISALIGNED-> */ /* 527*/ bundle =
    >> (NSBundle)BundlesNamesTable.objectForKey(fixedName);
    >> }
    >> /* <-MISALIGNED-> */ /* 530*/ return bundle;
    >> }
    >>
    >>
    >>
    >> this in turn was caused by the failure of LoadBundlesFromClassPath()
    >> during classloading of NSBundle in the static block:
    >>
    >>
    >> static {
    >> .
    >> .
    >> .
    >> /* <-MISALIGNED-> */ /* 349*/ NSArray classpath =
    >> NSArray._mutableComponentsSeparatedByString((new
    >> StringBuilder()).append(System.getProperty("java.class.path")).append(File.pathSeparator).append(NSProperties.getProperty("com.webobjects.classpath")).toString(),
    >> File.pathSeparator);
    >> /* <-MISALIGNED-> */ /* 352*/ NSMutableArray
    >> cleanedUpClassPath = new NSMutableArray();
    >> /* <-MISALIGNED-> */ /* 353*/ Iterator iterator =
    >> classpath.iterator();
    >> /* <-MISALIGNED-> */ /* 353*/ do {
    >> /* <-MISALIGNED-> */ /* 353*/ if(!iterator.hasNext())
    >> /* <-MISALIGNED-> */ /* 354*/ break;
    >> /* <-MISALIGNED-> */ /* 354*/ String fixedComponent =
    >> NSPathUtilities.stringByNormalizingExistingPath((String)iterator.next());
    >> /* <-MISALIGNED-> */ /* 355*/ if(fixedComponent != null
    >> && fixedComponent.length() > 0)
    >> /* <-MISALIGNED-> */ /* 356*/
    >> cleanedUpClassPath.add(fixedComponent);
    >> } while(true);
    >> /* <-MISALIGNED-> */ /* 363*/ for(int i =
    >> cleanedUpClassPath.count() - 1; i >= 0; i--) {
    >> /* <-MISALIGNED-> */ /* 364*/ String component =
    >> (String)cleanedUpClassPath.objectAtIndex(i);
    >> /* <-MISALIGNED-> */ /* 366*/
    >> if(cleanedUpClassPath.indexOfObject(component) != i)
    >> /* <-MISALIGNED-> */ /* 367*/
    >> cleanedUpClassPath.removeObjectAtIndex(i);
    >> }
    >> /* <-MISALIGNED-> */ /* 370*/ ClassPath = cleanedUpClassPath;
    >> /* <-MISALIGNED-> */ /* 373*/
    >> LoadBundlesFromClassPath(ClassPath);
    >> .
    >> .
    >> .
    >> }
    >>
    >> None of the following classpath entries was loaded …
    >>
    >> the value of ClassPath in line 370 was:
    >>
    >> ( C:\Dokumente und
    >> Einstellungen\cem\workspace\TankDiskAll\Applications\TankDiskServer\build\TankDiskServer.woa\Contents\Resources\Java,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaXML\5.4.2\JavaXML-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaJDBCAdaptor\5.4.2\JavaJDBCAdaptor-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaEOAccess\5.4.2\JavaEOAccess-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaEOControl\5.4.2\JavaEOControl-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaWebObjects\5.4.2\JavaWebObjects-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaFoundation\5.4.2\JavaFoundation-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaWOExtensions\5.4.2\JavaWOExtensions-5.4.2.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\postgresql\postgresql\7.4.1-jdbc3\postgresql-7.4.1-jdbc3.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\javax\mail\mail\1.4.1\mail-1.4.1.jar,
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\assense\shared\PostgreSQLPlugIn\1.5.4\PostgreSQLPlugIn-1.5.4.jar,
    >>
    >> C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\javax\activation\activation\1.1\activation-1.1.jar
    >> )
    >>
    >>
    >> … , because the loading of bundles works like this:
    >>
    >>
    >> NSBundle:
    >>
    >> private static void LoadBundlesFromClassPath(NSArray array) {
    >> /* <-MISALIGNED-> */ /* 741*/ Enumeration en =
    >> array.objectEnumerator();
    >> /* <-MISALIGNED-> */ /* 741*/ do {
    >> /* <-MISALIGNED-> */ /* 741*/ if(!en.hasMoreElements())
    >> /* <-MISALIGNED-> */ /* 742*/ break;
    >> /* <-MISALIGNED-> */ /* 742*/ NSBundle b = null;
    >> /* <-MISALIGNED-> */ /* 743*/ String nextPathComponent =
    >> (String)en.nextElement();
    >> /* <-MISALIGNED-> */ /* 744*/
    >> if(couldBeABundle(nextPathComponent))
    >> /* <-MISALIGNED-> */ /* 745*/ b =
    >> _bundleWithPathShouldCreateIsJar(nextPathComponent, true, false);
    >> /* <-MISALIGNED-> */ /* 747*/ if(b != null)
    >> /* <-MISALIGNED-> */ /* 748*/ b.postNotification();
    >> } while(true);
    >> }
    >>
    >>
    >> and the check whether something at the classpath is a bundle or not is
    >> based on the following code:
    >>
    >>
    >> NSBundle:
    >>
    >> private static boolean couldBeABundle(String aPath) {
    >> /* <-MISALIGNED-> */ /* 586*/ boolean isBundle = false;
    >> /* <-MISALIGNED-> */ /* 587*/ NSMutableArray resourcesSubdirs =
    >> new NSMutableArray();
    >> /* <-MISALIGNED-> */ /* 589*/ int index =
    >> aPath.lastIndexOf(RSUFFIX);
    >> /* <-MISALIGNED-> */ /* 591*/ if(index == -1) {
    >> /* <-MISALIGNED-> */ /* 593*/
    >> resourcesSubdirs.addObject(aPath.concat(RSUFFIX)); // Resources
    >> /* <-MISALIGNED-> */ /* 594*/
    >> resourcesSubdirs.addObject(aPath.concat(CSUFFIX)); // Contents
    >> } else {
    >> /* <-MISALIGNED-> */ /* 596*/
    >> resourcesSubdirs.addObject(aPath.substring(0, index + RSUFFIX.length()));
    >> }
    >> /* <-MISALIGNED-> */ /* 599*/ Iterator iterator =
    >> resourcesSubdirs.iterator();
    >> /* <-MISALIGNED-> */ /* 599*/ do {
    >> /* <-MISALIGNED-> */ /* 599*/ if(!iterator.hasNext())
    >> /* <-MISALIGNED-> */ /* 600*/ break;
    >> /* <-MISALIGNED-> */ /* 600*/ File file = new
    >> File((String)iterator.next());
    >> /* <-MISALIGNED-> */ /* 601*/ if(!file.exists() ||
    >> !file.isDirectory())
    >> /* <-MISALIGNED-> */ /* 602*/ continue;
    >> /* <-MISALIGNED-> */ /* 602*/ String files[] =
    >> file.list(TheInfoDictFilter); // looking for info.plist named file
    >> /* <-MISALIGNED-> */ /* 603*/ if(files.length <= 0)
    >> /* <-MISALIGNED-> */ /* 604*/ continue;
    >> /* <-MISALIGNED-> */ /* 604*/ isBundle = true;
    >> /* <-MISALIGNED-> */ /* 605*/ break;
    >> } while(true);
    >> /* <-MISALIGNED-> */ /* 610*/ return isBundle;
    >> }
    >>
    >>
    >> so this code looks for each entry in the classpath if there is a file
    >> named "info.plist" inside the subdirectories Resources and
    >> Resources/Contents . If not it isn't considered a bundle.
    >>
    >>
    >> is everything clear so far?
    >>
    >>
    >>
    >> =======================================================================================
    >>
    >>
    >>
    >>
    >> Because of the failure of NSBundle.bundleForName("JavaWebObjects") in
    >> line 116 of WOResourceManager, WOResourceManager falls back to the
    >> following:
    >>
    >> } else {
    >> /* 126*/ errorCause = "Unable to locate the
    >> \"JavaWebObjects\" bundle";
    >> /* 127*/ is =
    >> com/webobjects/appserver/WOResourceManager.getClassLoader().getResourceAsStream((new
    >> StringBuilder())
    >>
    >> .append("com/webobjects/appserver/").append(name).toString());
    >> }
    >>
    >> where it tries to load "com/webobjects/appserver/WOPropertyKeys.plist"
    >> at the first occasion from any jars in the classpath (it looks even in
    >> the bootclasspath).
    >>
    >>
    >> I found a file (next to several others) inside
    >> JavaWebObjects-5.4.2.jar, but there in a Folder named "Resources", not
    >> inside com/webobjects/appserver/
    >>
    >>
    >> when trying to load that Resource the something deep inside Java
    >> Classloading logic tried to open this path:
    >>
    >> \C:\Dokumente und
    >> Einstellungen\cem\.m2\repository\com\apple\webobjects\JavaWebObjects\5.4.2\JavaWebObjects.jar
    >> (note the leading backslash and the omission of the version string
    >> "-5.4.2") what resulted in some FileNotFoundException which was
    >> catched by the deeper levels of the Classloading logic.
    >>
    >>
    >>
    >> Because the Classloading logic was also looking inside
    >> TankDiskServer\build\TankDiskServer.woa\Contents\Resources\Java I just
    >> created the directory structure "com/webobjects/appserver/" and copied
    >> everything from inside the "Resource" directory of
    >> JavaWebObjects-5.4.2.jar over there. Now at least my first exception
    >> was gone but the trouble is not over yet.
    >>
    >>
    >>
    >> =======================================================================================
    >>
    >>
    >>
    >>
    >> now I am getting:
    >>
    >> [2008-10-16 20:25:46 CEST] <main> WebObjects version = Not Available
    >> [2008-10-16 20:25:46 CEST] <main> NSBundle is unable to find
    >> JavaWebObjects.framework -- unable to load
    >> "ExtensionsForResources.plist" from there. Ignoring.
    >> [2008-10-16 20:25:46 CEST] <main> A fatal exception occurred: null
    >> [2008-10-16 20:25:46 CEST] <main> java.lang.ExceptionInInitializerError
    >> at
    >> com.webobjects._ideservices._WOProject.ideProjectAtPath(_WOProject.java:85)
    >>
    >> at
    >> com.webobjects.appserver._private.WOProjectBundle._isProjectBundlePath(WOProjectBundle.java:225)
    >>
    >> at
    >> com.webobjects.appserver._private.WODeployedBundle.bundleWithNSBundle(WODeployedBundle.java:745)
    >>
    >> at
    >> com.webobjects.appserver._private.WODeployedBundle.deployedBundle(WODeployedBundle.java:124)
    >>
    >> at
    >> com.webobjects.appserver.WOResourceManager._initAppBundle(WOResourceManager.java:140)
    >>
    >> at
    >> com.webobjects.appserver.WOResourceManager.<init>(WOResourceManager.java:60)
    >>
    >> at
    >> com.webobjects.appserver.WOApplication.createResourceManager(WOApplication.java:2067)
    >>
    >> at
    >> com.webobjects.appserver.WOApplication.<init>(WOApplication.java:841)
    >> at
    >> com.assense.core.wo.AssenseApplication.<init>(AssenseApplication.java:25)
    >> at com.tankdisk.Application.<init>(Application.java:67)
    >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
    >> Method)
    >> at
    >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    >>
    >> at
    >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    >>
    >> at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    >> at java.lang.Class.newInstance0(Class.java:350)
    >> at java.lang.Class.newInstance(Class.java:303)
    >> at com.webobjects.appserver.WOApplication.main(WOApplication.java:547)
    >> at com.tankdisk.Application.main(Application.java:37)
    >> Caused by: java.lang.IllegalStateException: Unable to find any
    >> resource extensions in either JavaWebObjects.framework or the main
    >> bundle.
    >> at
    >> com.webobjects._ideservices._IDEProjectPBX.<clinit>(_IDEProjectPBX.java:183)
    >>
    >> ... 18 more
    >>
    >>
    >>
    >>>
    >>>
    >>>
    >>> with regards,
    >>> --
    >>>
    >>> Lachlan Deck
    >>>
    >>
    >>
    >>
    >>
    >> I hope you didn't fall asleep while reading this looooong mail!
    >>
    >>
    >>
    >>
    >>
    >> regards,
    >>
    >>
    >>
    >> Lars
    >>
    >>
    >>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Thu Oct 16 2008 - 18:32:06 EDT