Sorry, sometimes I have a habit of over explaining and obscuring the
important question... How critical is PreferredClassProvider? Is it really
needed? Can I do without it?


On Mon, Jul 7, 2014 at 10:23 AM, Gus Heck <[email protected]> wrote:

> Yes the build tool is gradle. It pulls resources from maven central just
> like maven. It's worth checking out if you haven't. It uses the cool dep
> resolution stuff from maven but ditches the pom straight-jacket.
>
> I found the class, in the jar, overlooked it the first time. I searched on
> loader when I opened the jar with emacs and didn't notice that the package
> I found was com/sun/jini not net/jini (oops!). So that's resolved, but this
> only makes things muddier. The jar is being packed with one-jar (which is a
> tool that allows you to produce a jar containing both your classes and
> their dependencies in the same jar). Clearly many other classes are loading
> and so I turned on one-jar's logging and got this:
>
> guss-mbp:ingest gus$ j7a -Done-jar.info=true -jar
> build/libs/ingest-node.jar foo bar 2>&1 | grep Preferred
> [JarClassLoader] WARN:
> com/sun/jini/loader/pref/internal/PreferredResources.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:  net/jini/loader/pref/PreferredClassLoader$1.class
> in lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:  net/jini/loader/pref/PreferredClassLoader$2.class
> in lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:  net/jini/loader/pref/PreferredClassLoader$3.class
> in lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:  net/jini/loader/pref/PreferredClassLoader$4.class
> in lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:  net/jini/loader/pref/PreferredClassLoader.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$1.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$2.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$3.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$4.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$5.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$LoaderEntry.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredClassProvider$LoaderKey.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:  net/jini/loader/pref/PreferredClassProvider.class
> in lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> [JarClassLoader] WARN:
> net/jini/loader/pref/PreferredFactoryClassLoader.class in
> lib/jsk-platform-2.2.2.jar is hidden by lib/jini-ext-2.1.jar (with
> different bytecode)
> java.lang.NoClassDefFoundError: net.jini.loader.pref.PreferredClassProvider
>
> So I took the jini-ext jar out, and all I get is
> uss-mbp:ingest gus$ j7a -Done-jar.info=true -jar
> build/libs/ingest-node.jar foo bar 2>&1 | grep Preferred
> java.lang.NoClassDefFoundError: net.jini.loader.pref.PreferredClassProvider
>
> So it's there, it's found but something odd is going on after that that
> results in NoClassDefFoundError. This may relate to the JarClassLoader that
> gets installed, but clearly that works most of the time...
>
> Are you attempting to manually load this class by looking up the .class as
> file? (one-jar has a known bug along these lines. It loads classes just
> fine from the included jars, and files from your project just fine. I think
> it loads files from dep jars just fine too (otherwise lots of stuff would
> have issues) but it seems to confused if you try to load classes as if they
> are files: https://sourceforge.net/p/one-jar/bugs/73/)
>
> How critical is PreferredClassProvider to river's operation?
>
> -Gus
>
>
> On Mon, Jul 7, 2014 at 9:39 AM, Greg Trasuk <[email protected]>
> wrote:
>
>>
>> PreferredClassProvider should be in jsk-platform.jar (which I think you
>> confirmed with your ‘grep -r’).  It is there in the 2.2.2 build that I
>> have.  I’m not familiar with your build tool (Gradle?) but you might want
>> to check the class path entry in the jar manifest that’s generated, to see
>> if jsk-platform is actually in the runtime class path.
>>
>> Are you starting up the system using the ServiceStarter approach or
>> winging it yourself?  If ServiceStarter, could you post the starter
>> configuration file?
>>
>> Cheers,
>>
>> Greg Trasuk.
>> On Jul 6, 2014, at 8:27 PM, Gus Heck <[email protected]> wrote:
>>
>> > I've now spent several hours hunting for this class. What jar contains
>> it?
>> >
>> > Presently I'm building with the following (shotgun, messy non minimized)
>> > dependencies:
>> > dependencies {
>> >    compile 'com.google.guava:guava:15.0'
>> >    compile 'com.google.code.findbugs:jsr305:2.0.3'
>> >    compile 'jini:jini-core:2.1'
>> >    compile 'org.apache.river:reggie:2.2.2'
>> >    compile 'net.jini:jini-ext:2.1'
>> >    compile 'net.jini:jsk-lib:2.2.2'
>> >    compile 'net.jini:jsk-dl:2.2.2'
>> >    compile 'net.jini:jsk-platform:2.2.2'
>> >    compile 'net.jini:jsk-resources:2.2.2'
>> >    compile 'net.jini:jini-core:2.1'
>> >    compile 'net.jini:jini-ext:2.1'
>> >    compile 'net.jini:jsk-policy:2.2.2'
>> > //    compile 'net.jini:jini-starterkit:2.1-beta2' // 404 in maven
>> central
>> >    compile 'org.apache.logging.log4j:log4j-core:2.0-rc2'
>> >    testCompile 'junit:junit:4.11'
>> > }
>> >
>> > I basically got frustrated and just threw everything I could find at it
>> and
>> > it still does this:
>> >
>> > guss-mbp:ingest gus$ alias j7a
>> > alias
>> >
>> j7a='/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/bin/java
>> > -Djava.security.policy=/Users/gus/tools/jpolicy/all.policy
>> >
>> -Djava.rmi.server.RMIClassLoaderSpi=net.jini.loader.pref.PreferredClassProvider'
>> > guss-mbp:ingest gus$ j7a -Done-jar.silent=true -jar
>> > build/libs/ingest-node.jar foo bar
>> > Starting injester node...
>> > Jul 06, 2014 7:57:31 PM
>> > net.jini.discovery.LookupDiscovery$UnicastDiscoveryTask run
>> > INFO: exception occurred during unicast discovery to guss-mbp.lan:54290
>> > with constraints InvocationConstraints[reqs: {}, prefs: {}]
>> > java.lang.NoClassDefFoundError:
>> net.jini.loader.pref.PreferredClassProvider
>> >    at
>> >
>> java.rmi.server.RMIClassLoader.initializeProvider(RMIClassLoader.java:687)
>> >    at java.rmi.server.RMIClassLoader.access$000(RMIClassLoader.java:110)
>> >    at java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:120)
>> >    at java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:119)
>> >    at java.security.AccessController.doPrivileged(Native Method)
>> >    at java.rmi.server.RMIClassLoader.<clinit>(RMIClassLoader.java:117)
>> >    at net.jini.loader.ClassLoading.loadClass(ClassLoading.java:138)
>> >    at
>> > net.jini.io.MarshalInputStream.resolveClass(MarshalInputStream.java:296)
>> >    at
>> > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
>> >    at
>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
>> >    at
>> >
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>> >    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> >    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>> >    at net.jini.io.MarshalledInstance.get(MarshalledInstance.java:358)
>> >    at
>> >
>> com.sun.jini.discovery.DiscoveryV1.doUnicastDiscovery(DiscoveryV1.java:397)
>> >    at
>> net.jini.discovery.LookupDiscovery$13.run(LookupDiscovery.java:3327)
>> >    at java.security.AccessController.doPrivileged(Native Method)
>> >    at
>> >
>> net.jini.discovery.LookupDiscovery.doUnicastDiscovery(LookupDiscovery.java:3324)
>> >    at
>> >
>> net.jini.discovery.LookupDiscovery.doUnicastDiscovery(LookupDiscovery.java:3355)
>> >    at
>> > net.jini.discovery.LookupDiscovery.access$3900(LookupDiscovery.java:696)
>> >    at
>> >
>> net.jini.discovery.LookupDiscovery$UnicastDiscoveryTask.run(LookupDiscovery.java:1744)
>> >    at
>> com.sun.jini.thread.TaskManager$TaskThread.run(TaskManager.java:331)
>> >
>> > No Service Registries found
>> >
>> > I'm passing in the option for this class on the advice of your getting
>> > started page <
>> http://river.apache.org/user-guide-basic-river-services.html>.
>> > It would be really nice if that page listed what dependency I needed for
>> > this.
>> >
>> > I tried grepping the entire distribution and only found it in two places
>> >
>> > guss-mbp:apache-river-2.2.2 gus$ grep -r PreferredClassProvider *
>> > <*snip* javadoc matches>
>> > Binary file lib/jini-ext.jar matches
>> > Binary file lib/jsk-platform.jar matches
>> >
>> > in both jars I see only:
>> >  drwxr-xr-x         0  10-Nov-2013  22:49:20  com/sun/jini/loader/
>> >  drwxr-xr-x         0  10-Nov-2013  22:49:20  com/sun/jini/loader/pref/
>> >  drwxr-xr-x         0  10-Nov-2013  22:49:20
>> > com/sun/jini/loader/pref/internal/
>> >  -rw-r--r--      7218  10-Nov-2013  22:49:20
>> > com/sun/jini/loader/pref/internal/PreferredResources.class
>> >
>> >
>> > But in any case as you can see both of these libs are already in my
>> > dependency list.
>> >
>> > This puzzles me since it's clearly in your repository...
>> > http://svn.apache.org/viewvc/river/jtsk/trunk/src/net/jini/loader/pref/
>> >
>> > shouldn't it be in at least one of the distributed jars, if not one of
>> the
>> > packages on mavencentral?
>> >
>> > -Gus
>> >
>> > --
>> > http://www.the111shift.com
>>
>>
>
>
> --
> http://www.the111shift.com
>



-- 
http://www.the111shift.com

Reply via email to