Is there a JIRA bug for this issue yet? -D
On Thu, Jun 14, 2012 at 12:02 PM, Gary Gregory <garydgreg...@gmail.com> wrote: > On Thu, Jun 14, 2012 at 3:01 PM, Gary Gregory <garydgreg...@gmail.com>wrote: > >> On Thu, Jun 14, 2012 at 2:00 PM, James Carman >> <ja...@carmanconsulting.com>wrote: >> >>> Are you using dynamic imports? >>> >> >> No, VFS is on the Bundle-ClassPath. >> > > And VFS and other jars in is our app server jar. > > Gary > > >> Gary >> >>> >>> On Thu, Jun 14, 2012 at 1:58 PM, Gary Gregory <garydgreg...@gmail.com >>> >wrote: >>> >>> > On Thu, Jun 14, 2012 at 1:03 PM, Dan Tran <dant...@gmail.com> wrote: >>> > >>> > > Thanks for discover this issue. Look likes FileProvider get excluded >>> > > from export list? >>> > > >>> > >>> > I do not think so, the 2.0 MANIFEST.MF includes: >>> > >>> > Export-Package: org.apache.commons.vfs2.impl;version="2.0",org.apache. >>> > commons.vfs2.provider.url;version="2.0",org.apache.commons.vfs2.provi >>> > ... >>> > >>> > The class is found and instantiated, but it cannot be cast because it >>> comes >>> > from a different class loader. >>> > >>> > Gary >>> > >>> > >>> > > >>> > > -D >>> > > >>> > > On Thu, Jun 14, 2012 at 4:53 AM, Gary Gregory <garydgreg...@gmail.com >>> > >>> > > wrote: >>> > > > The classLoader ivar is initialized differently in 1.0 than in 2.0. >>> > > > That's why the CCE shows up. A different class loader is used. I'm >>> not >>> > > > sure if there is a bug in 2.0 that was introduced when the >>> classLoader >>> > > > use was changed. I'm starting to think this was an unexpected side >>> > > > effect. >>> > > > >>> > > > Gary >>> > > > >>> > > > On Jun 14, 2012, at 2:08, Ralph Goers <ralph.go...@dslextreme.com> >>> > > wrote: >>> > > > >>> > > >> I have no idea why it worked in 1.0 and fails now. As far as I can >>> > tell >>> > > the call to createManager has always been there. I have no idea why. >>> > > >> >>> > > >> But I also don't know why >>> > > >> >>> > > >>> Caused by: java.lang.ClassCastException: >>> > > >>> org.apache.commons.vfs2.provider.local.DefaultLocalFileProvider >>> > cannot >>> > > be >>> > > >>> cast to org.apache.commons.vfs2.provider.FileProvider >>> > > >> >>> > > >> is happening. That should be valid. >>> > > >> >>> > > >> >>> > > >> Ralph >>> > > >> >>> > > >> On Jun 13, 2012, at 2:16 PM, Gary Gregory wrote: >>> > > >> >>> > > >>> Hi All: >>> > > >>> >>> > > >>> When I run under our OSGi (Eclipse Equinox) set up with 2.0, I get >>> > this >>> > > >>> pickle: >>> > > >>> >>> > > >>> org.apache.commons.vfs2.FileSystemException: Could not create a >>> file >>> > > system >>> > > >>> manager of class >>> > > "org.apache.commons.vfs2.impl.StandardFileSystemManager". >>> > > >>> at org.apache.commons.vfs2.VFS.createManager(VFS.java:99) >>> > > >>> at org.apache.commons.vfs2.VFS.getManager(VFS.java:50) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> com.seagullsw.toolbox.config.ConfigurationDirectory.resolveFileObject(ConfigurationDirectory.java:315) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> com.seagullsw.toolbox.config.Configuration.resolveFileObject(Configuration.java:135) >>> > > >>> <Snip: ...my app frames...> >>> > > >>> at >>> > > >>> >>> > > >>> > >>> com.seagullsw.appinterface.server.osgi.JCicsOsgiTestCase.testJcicsOsgiRoundtrip(JCicsOsgiTestCase.java:226) >>> > > >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> > > >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>> > > >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown >>> Source) >>> > > >>> at java.lang.reflect.Method.invoke(Unknown Source) >>> > > >>> at >>> org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:307) >>> > > >>> at >>> > > org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:112) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:73) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) >>> > > >>> at >>> > > org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) >>> > > >>> at >>> > org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) >>> > > >>> at >>> > > >>> >>> > > >>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >>> > > >>> Caused by: org.apache.commons.vfs2.FileSystemException: Could not >>> > load >>> > > VFS >>> > > >>> configuration from >>> > > >>> >>> > > >>> > >>> "bundleresource://7.fwk545215872:34/org/apache/commons/vfs2/impl/providers.xml". >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.apache.commons.vfs2.impl.StandardFileSystemManager.configure(StandardFileSystemManager.java:199) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.apache.commons.vfs2.impl.StandardFileSystemManager.init(StandardFileSystemManager.java:123) >>> > > >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> > > >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>> > > >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown >>> Source) >>> > > >>> at java.lang.reflect.Method.invoke(Unknown Source) >>> > > >>> at org.apache.commons.vfs2.VFS.createManager(VFS.java:88) >>> > > >>> ... 49 more >>> > > >>> Caused by: java.lang.ClassCastException: >>> > > >>> org.apache.commons.vfs2.provider.local.DefaultLocalFileProvider >>> > cannot >>> > > be >>> > > >>> cast to org.apache.commons.vfs2.provider.FileProvider >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.apache.commons.vfs2.impl.StandardFileSystemManager.addProvider(StandardFileSystemManager.java:371) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.apache.commons.vfs2.impl.StandardFileSystemManager.configure(StandardFileSystemManager.java:270) >>> > > >>> at >>> > > >>> >>> > > >>> > >>> org.apache.commons.vfs2.impl.StandardFileSystemManager.configure(StandardFileSystemManager.java:195) >>> > > >>> ... 55 more >>> > > >>> >>> > > >>> Which I work around with: >>> > > >>> >>> > > >>> private void initVfs() { >>> > > >>> StandardFileSystemManager fsm = new >>> > StandardFileSystemManager(); >>> > > >>> fsm.setClassLoader(fsm.getClass().getClassLoader()); >>> > > >>> try { >>> > > >>> FieldUtils.writeDeclaredStaticField(VFS.class, >>> "instance", >>> > > fsm, >>> > > >>> true); >>> > > >>> fsm.init(); >>> > > >>> } catch (FileSystemException e) { >>> > > >>> ... >>> > > >>> } catch (IllegalAccessException e) { >>> > > >>> ... >>> > > >>> } >>> > > >>> } >>> > > >>> >>> > > >>> Two questions: >>> > > >>> >>> > > >>> (1) Why is org.apache.commons.vfs2.VFS.getManager() coded with a >>> > class >>> > > name >>> > > >>> ref instead of the a real Class object or an actual instance: >>> > > >>> >>> > > >>> public static synchronized FileSystemManager getManager() >>> > > >>> throws FileSystemException >>> > > >>> { >>> > > >>> if (instance == null) >>> > > >>> { >>> > > >>> instance = >>> > > >>> >>> > > >>> createManager("org.apache.commons.vfs2.impl.StandardFileSystemManager"); >>> > > >>> } >>> > > >>> return instance; >>> > > >>> } >>> > > >>> >>> > > >>> Why not: >>> > > >>> >>> > > >>> public static synchronized FileSystemManager getManager() >>> > > >>> throws FileSystemException >>> > > >>> { >>> > > >>> if (instance == null) >>> > > >>> { >>> > > >>> instance = new StandardFileSystemManager(); >>> > > >>> // where the StandardFileSystemManager constructor calls >>> > > init(); >>> > > >>> } >>> > > >>> return instance; >>> > > >>> } >>> > > >>> >>> > > >>> If not, what about adding a setManager(FileSystemManager)? >>> > > >>> >>> > > >>> This did not happen in 1.0, it worked fine in OSGi. >>> > > >>> >>> > > >>> Thank you, >>> > > >>> Gary >>> > > >>> >>> > > >>> -- >>> > > >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> > > >>> JUnit in Action, 2nd Ed: <http://goog_1249600977> >>> http://bit.ly/ECvg0 >>> > > >>> Spring Batch in Action: <http://s.apache.org/HOq> >>> > http://bit.ly/bqpbCK >>> > > >>> Blog: http://garygregory.wordpress.com >>> > > >>> Home: http://garygregory.com/ >>> > > >>> Tweet! http://twitter.com/GaryGregory >>> > > >> >>> > > >> >>> > > >> >>> --------------------------------------------------------------------- >>> > > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > >> For additional commands, e-mail: dev-h...@commons.apache.org >>> > > >> >>> > > > >>> > > > >>> --------------------------------------------------------------------- >>> > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > > For additional commands, e-mail: dev-h...@commons.apache.org >>> > > > >>> > > >>> > > --------------------------------------------------------------------- >>> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > For additional commands, e-mail: dev-h...@commons.apache.org >>> > > >>> > > >>> > >>> > >>> > -- >>> > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> > JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0 >>> > Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK >>> > Blog: http://garygregory.wordpress.com >>> > Home: http://garygregory.com/ >>> > Tweet! http://twitter.com/GaryGregory >>> > >>> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0 >> Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK >> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0 > Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org