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