Hmm, I ran my code (which is more or less just a cut and paste of your
example for multicast lookup from getting started). Without it
PreferredClassProvider it seemed to work from a oneJar. I ran my code with
PreferredClassProvider it in the ide and it also seemed to work. I ran my
code in the ide under debug and with a break point set, and it didn't throw
an error but it couldn't find the ServiceRegistrar, yet when I toggle the
break point off it finds it ok. Is that expected? Is there some sort of
timeout that needs to be tweaked?

-Gus


On Mon, Jul 7, 2014 at 8:19 PM, Gus Heck <[email protected]> wrote:

> 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
>



-- 
http://www.the111shift.com

Reply via email to