That error is definitely a static initializer or block throwing.  Nothing else 
is output?


> On Jan 23, 2020, at 8:41 AM, Aaron Rosenzweig via Webobjects-dev 
> <webobjects-dev@lists.apple.com> wrote:
> 
> I tried this call:
> 
> NSBundle MYBUNDLE = NSBundle.mainBundle();
> 
> It fails immediately with:
> java.lang.NoClassDefFoundError: Could not initialize class 
> com.webobjects.foundation.NSBundle
> 
> I’m suspecting it has to do with the static initializer of NSBundle.
> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
> e:  aa...@chatnbike.com <mailto:aa...@chatnbike.com>  t:  (301) 956-2319      
>         
>       
> 
>> On Jan 23, 2020, at 11:23 AM, Aaron Rosenzweig <aa...@chatnbike.com 
>> <mailto:aa...@chatnbike.com>> wrote:
>> 
>> Riddle me this… how can you get a class not defined error from the class 
>> itself?
>> 
>> java.lang.NoClassDefFoundError: Could not initialize class 
>> com.webobjects.foundation.NSBundle
>>      at com.webobjects.foundation.NSBundle.mainBundle(NSBundle.java:526)
>> 
>> You are already in NSBundle.mainBundle() and then out pops a 
>> NoClassDefFoundError… that must be a red herring but I cannot figure it out. 
>> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
>> e:  aa...@chatnbike.com <mailto:aa...@chatnbike.com>  t:  (301) 956-2319     
>>         
>>      
>> 
>>> On Jan 23, 2020, at 10:03 AM, Aaron Rosenzweig <aa...@chatnbike.com 
>>> <mailto:aa...@chatnbike.com>> wrote:
>>> 
>>> Hi Dennis - I hadn’t thought of that - we could have a fast failsafe and 
>>> then a slow one run at different times. Thanks! good idea. 
>>> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
>>> e:  aa...@chatnbike.com <mailto:aa...@chatnbike.com>  t:  (301) 956-2319    
>>>         
>>>     
>>> 
>>>> On Jan 23, 2020, at 9:58 AM, Dennis Scheffer <den...@selbstdenker.ag 
>>>> <mailto:den...@selbstdenker.ag>> wrote:
>>>> 
>>>> 
>>>>> Cloning a “company” EO and testing unique constraints in SQL - is heavier 
>>>>> than testing an “isCamelCase()” function but lighter than selenium. Maybe 
>>>>> we have to do it in failsafe but it feels closer to regular unit tests 
>>>>> that should fire every time there is a checkin to the repo. In other 
>>>>> words if your tests take 5 minutes to run, why not let Agnes tell you 
>>>>> immediately that the build is broken rather than waiting till midnight 
>>>>> for selenium to do so?
>>>> 
>>>> If there are multiple ways in which you would like to use the failsafe 
>>>> plugin, you can always add multiple executions and put them in their own 
>>>> build profiles 
>>>> (https://maven.apache.org/guides/introduction/introduction-to-profiles.html
>>>>  
>>>> <https://maven.apache.org/guides/introduction/introduction-to-profiles.html>).
>>>>  Then you can fire failsafe every time you check in new code without 
>>>> selenium and you can do something like this if your want selenium tests to 
>>>> be run: 'mvn clean verify -P with-selenium'. There are a bunch of ways to 
>>>> configure profiles to do something like that.
>>>> 
>>>> -- 
>>>> Dennis
>>>> 
>>>>> On 23. Jan 2020, at 15:39, Aaron Rosenzweig <aa...@chatnbike.com 
>>>>> <mailto:aa...@chatnbike.com>> wrote:
>>>>> 
>>>>> Dennis that is a good point,
>>>>> 
>>>>> At the moment I have not cleaned and the product is there but it’s not 
>>>>> working but your point is still well taken. In Jenkins, in the cloud, it 
>>>>> will do a clean and I really should be doing a clean every time so the 
>>>>> product won’t be there to test with… there won’t be a bundle. 
>>>>> 
>>>>> Maven “Failsafe” makes sense for selenium… which is technically a JUnit 
>>>>> test too but it’s very heavy and flexes the UI of a bundled and launched 
>>>>> app. 
>>>>> 
>>>>> Cloning a “company” EO and testing unique constraints in SQL - is heavier 
>>>>> than testing an “isCamelCase()” function but lighter than selenium. Maybe 
>>>>> we have to do it in failsafe but it feels closer to regular unit tests 
>>>>> that should fire every time there is a checkin to the repo. In other 
>>>>> words if your tests take 5 minutes to run, why not let Agnes tell you 
>>>>> immediately that the build is broken rather than waiting till midnight 
>>>>> for selenium to do so?
>>>>> 
>>>>> http://www.globalnerdy.com/wp-content/uploads/2008/08/you_broke_the_build.jpg
>>>>>  
>>>>> <http://www.globalnerdy.com/wp-content/uploads/2008/08/you_broke_the_build.jpg>
>>>>> 
>>>>> When we run from within Eclipse we have a “bundless build” that uses the 
>>>>> Fluffy Bunny NSBundle variant and works great… without a product… and the 
>>>>> destructive EOF unit tests work there. I think what Markus did was patch 
>>>>> NSBundle to treat the maven target with the intermediate classes and 
>>>>> resources as a “maven bundless build” or a “maven black-ops bunny” 
>>>>> if-you-will. 
>>>>> 
>>>>> I’m still confused but clarity is setting in. Thank you everyone for this 
>>>>> hearty discussion. 
>>>>> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
>>>>> e:  aa...@chatnbike.com <mailto:aa...@chatnbike.com>  t:  (301) 956-2319  
>>>>>         
>>>>>   
>>>>> 
>>>>>> On Jan 23, 2020, at 2:54 AM, Dennis Scheffer <den...@selbstdenker.ag 
>>>>>> <mailto:den...@selbstdenker.ag>> wrote:
>>>>>> 
>>>>>> Hi everyone,
>>>>>> 
>>>>>> 
>>>>>>> // That's the main bundle when running tests from Eclipse
>>>>>>> Path mainBundlePath = Paths.get("build/your-project.woa");
>>>>>>> 
>>>>>>> if (Files.notExists(mainBundlePath)) {
>>>>>>>  // Maven doesn't create a build directory. The WOA bundle goes into 
>>>>>>> the target folder instead.
>>>>>>>  mainBundlePath = Paths.get("target/your-project.woa");
>>>>>>> }
>>>>>>> 
>>>>>>> ERXExtensions.initApp("your-project", mainBundlePath.toUri().toURL(), 
>>>>>>> ACUnitTestingApplication.class, args);
>>>>>> 
>>>>>> This may not work under certain circumstances because the surefire 
>>>>>> plugin usually runs in the Maven 'test' phase which is before the 
>>>>>> 'package' phase. Therefore, there may not be a bundle at 
>>>>>> 'target/your-project.woa' – especially if you do a 'mvn clean test'.
>>>>>> 
>>>>>> The solution is very simple: I would consider tests that depend on a 
>>>>>> pre-build bundle integration tests (which makes sense because most of 
>>>>>> the time all the application's 'units' are integrated in a bundle). And 
>>>>>> just use the Maven failsafe pugin 
>>>>>> (https://maven.apache.org/surefire/maven-failsafe-plugin/ 
>>>>>> <https://maven.apache.org/surefire/maven-failsafe-plugin/>). It works 
>>>>>> exactly the same as the surefire plugin but runs in the 'verify' phase 
>>>>>> which is after the 'package' phase. So 'mvn clean verify' will clean 
>>>>>> your target directory, create a fresh new bundle and run your tests on 
>>>>>> your fresh bundle with the solution mentioned above.
>>>>>> 
>>>>>> With regards,
>>>>>> -- 
>>>>>> Dennis
>>>>>> 
>>>>>> 
>>>>>>> On 23. Jan 2020, at 02:28, Henrique Prange via Webobjects-dev 
>>>>>>> <webobjects-dev@lists.apple.com 
>>>>>>> <mailto:webobjects-dev@lists.apple.com>> wrote:
>>>>>>> 
>>>>>>> Hey Aaron,
>>>>>>> 
>>>>>>> This error rings a bell. I don't recall all the details. It looks like 
>>>>>>> the collectMainProps method is trying to find the Properties file of 
>>>>>>> your project in the wrong place.
>>>>>>> 
>>>>>>> When you build your project in Eclipse with WOLips, it generates a 
>>>>>>> build folder containing your project's WOA bundle. Maven, however, puts 
>>>>>>> the generated WOA bundle in the target folder. I'm afraid the 
>>>>>>> application initialization code keeps looking for the build folder when 
>>>>>>> you run your tests with Maven.
>>>>>>> 
>>>>>>> I'm not sure if there's a better way to solve this problem. Anyway, the 
>>>>>>> code below may fix it.
>>>>>>> 
>>>>>>> // That's the main bundle when running tests from Eclipse
>>>>>>> Path mainBundlePath = Paths.get("build/your-project.woa");
>>>>>>> 
>>>>>>> if (Files.notExists(mainBundlePath)) {
>>>>>>>  // Maven doesn't create a build directory. The WOA bundle goes into 
>>>>>>> the target folder instead.
>>>>>>>  mainBundlePath = Paths.get("target/your-project.woa");
>>>>>>> }
>>>>>>> 
>>>>>>> ERXExtensions.initApp("your-project", mainBundlePath.toUri().toURL(), 
>>>>>>> ACUnitTestingApplication.class, args);
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> 
>>>>>>> HP
>>>>>>> 
>>>>>>>> On Jan 22, 2020, at 2:09 PM, Aaron Rosenzweig via Webobjects-dev 
>>>>>>>> <webobjects-dev@lists.apple.com 
>>>>>>>> <mailto:webobjects-dev@lists.apple.com>> wrote:
>>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> I’m trying to run maven unit tests with the surefire plugin that make 
>>>>>>>> use of EOF but it’s not working out. 
>>>>>>>> 
>>>>>>>> I can run them in Eclipse with a direct launch as a bundless build and 
>>>>>>>> it works. I make a call in the static initializer of the test case to:
>>>>>>>> ERXExtensions.initApp(ACUnitTestingApplication.class, arguments);
>>>>>>>> 
>>>>>>>> And it thinks it’s a WO app and has access to the model group and all 
>>>>>>>> of EOF and I can do destructive stuff like creating and saving Eos to 
>>>>>>>> the DB all inside a launch from Eclipse.
>>>>>>>> 
>>>>>>>> Where I’m running into trouble is trying to do it with Maven. At the 
>>>>>>>> moment I’m getting a null pointer from maven launch at the following 
>>>>>>>> place.
>>>>>>>> 
>>>>>>>> er.extensions.appserver.ERXApplication$Loader.collectMainProps(ERXApplication.java:757)
>>>>>>>> 
>>>>>>>> I think because it is wanting to treat it as a bundle but it isn’t and 
>>>>>>>> so… I’m not sure where to go from here. Any advice?
>>>>>>>> 
>>>>>>>> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
>>>>>>>> e:  aa...@chatnbike.com <mailto:aa...@chatnbike.com>  t:  (301) 
>>>>>>>> 956-2319
>>>>>>>>        
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com 
>>>>>>>> <mailto:Webobjects-dev@lists.apple.com>)
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/hprange%40gmail.com
>>>>>>>>  
>>>>>>>> <https://lists.apple.com/mailman/options/webobjects-dev/hprange%40gmail.com>
>>>>>>>> 
>>>>>>>> This email sent to hpra...@gmail.com <mailto:hpra...@gmail.com>
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com 
>>>>>>> <mailto:Webobjects-dev@lists.apple.com>)
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/dennis%40selbstdenker.ag
>>>>>>>  
>>>>>>> <https://lists.apple.com/mailman/options/webobjects-dev/dennis%40selbstdenker.ag>
>>>>>>> 
>>>>>>> This email sent to den...@selbstdenker.ag 
>>>>>>> <mailto:den...@selbstdenker.ag>
>>>>> 
>>>> 
>>> 
>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/hill.chuck%40gmail.com
> 
> This email sent to hill.ch...@gmail.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to