You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Ron Wheeler <rw...@artifact-software.com> on 2017/05/22 13:44:22 UTC
Oak and Mongo
Does Oak work with the latest version (3.4.2) of MongoDB?
I could not get the code on
http://jackrabbit.apache.org/oak/docs/construct.html to work.
getDB("test2")
is flagged as deprecated.
The
Exception in thread "main" java.lang.IllegalAccessError: tried to access
class org.apache.jackrabbit.stats.TimeSeriesAverage from class
org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats
at
org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.getAvgTimeSeries(BlobStoreStats.java:200)
at
org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.<init>(BlobStoreStats.java:75)
at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.configureBlobStore(DocumentMK.java:1296)
at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setBlobStore(DocumentMK.java:669)
at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setMongoDB(DocumentMK.java:663)
at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setMongoDB(DocumentMK.java:634)
at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setMongoDB(DocumentMK.java:684)
at
com.artifact_software.communication.InitiateDatabase.getNodeStore(InitiateDatabase.java:109)
at
com.artifact_software.communication.InitiateDatabase.main(InitiateDatabase.java:29)
I have broken the example down into smaller chunks that should do the
same thing as the code in the example and this is the function that fails
private static DocumentNodeStore getNodeStore(){
DB db = new MongoClient("127.0.0.1", 27017).getDB("test2");
DocumentNodeStore ns = new DocumentMK.Builder().
setMongoDB(db).getNodeStore();
return ns;
}
--
Ron Wheeler
President
Artifact Software Inc
email: rwheeler@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102
Re: Oak and Mongo
Posted by Ron Wheeler <rw...@artifact-software.com>.
That was exactly the problem.
I missed a hard-coded version on one dependency in Maven that did not
match with the <oakVersion> property setting that controlled the rest of
the Oak dependencies.
Thank you very much.
Ron
On 22/05/2017 11:59 PM, Chetan Mehrotra wrote:
> On Mon, May 22, 2017 at 7:14 PM, Ron Wheeler
> <rw...@artifact-software.com> wrote:
>> Exception in thread "main" java.lang.IllegalAccessError: tried to access
>> class org.apache.jackrabbit.stats.TimeSeriesAverage from class
>> org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats
>> at
>> org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.getAvgTimeSeries(BlobStoreStats.java:200)
> Looks like some dependency version conflict issue. Whats the version
> of jackrabbit-jcr-commons in your classpath? The TimeSeriesAverage was
> made public with JCR-3855 long time back. So unless you are using a
> version < 2.10 you should not be getting this error
>
> Chetan Mehrotra
>
--
Ron Wheeler
President
Artifact Software Inc
email: rwheeler@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102
Re: Oak and Mongo
Posted by Clay Ferguson <wc...@gmail.com>.
The most common reason for wrong/unexpected version of a class to get used
at runtime arises from the fact that Java at runtime will simply scan the
classpath and grab the first class name that matches when searching for
classes. So what can happen is that even if you specify the right
dependency version some OTHER dependency (I'm assuming Maven, as the
example) may load some OTHER version of something. The way to troubleshoot
and see if this is happening is use the maven command line option for
generating the depencency graph/tree and view that and see where the other
unwanted version is getting pulled in from, and then to fix it (not ALWAYS
possible) is to do an exclude of the improper version and then hope that
doesn't choke the JAR/dep that pulled in the wrong version to begin with.
This is a nasty problem, and is the reason that springboot exists and to
some extent why OSGi exists. The single classpath is a limitation of Java.
Best regards,
Clay Ferguson
wclayf@gmail.com
On Mon, May 22, 2017 at 10:59 PM, Chetan Mehrotra <chetan.mehrotra@gmail.com
> wrote:
> On Mon, May 22, 2017 at 7:14 PM, Ron Wheeler
> <rw...@artifact-software.com> wrote:
> > Exception in thread "main" java.lang.IllegalAccessError: tried to access
> > class org.apache.jackrabbit.stats.TimeSeriesAverage from class
> > org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats
> > at
> > org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.getAvgTimeSeries(
> BlobStoreStats.java:200)
>
> Looks like some dependency version conflict issue. Whats the version
> of jackrabbit-jcr-commons in your classpath? The TimeSeriesAverage was
> made public with JCR-3855 long time back. So unless you are using a
> version < 2.10 you should not be getting this error
>
> Chetan Mehrotra
>
Re: Oak and Mongo
Posted by Chetan Mehrotra <ch...@gmail.com>.
On Mon, May 22, 2017 at 7:14 PM, Ron Wheeler
<rw...@artifact-software.com> wrote:
> Exception in thread "main" java.lang.IllegalAccessError: tried to access
> class org.apache.jackrabbit.stats.TimeSeriesAverage from class
> org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats
> at
> org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.getAvgTimeSeries(BlobStoreStats.java:200)
Looks like some dependency version conflict issue. Whats the version
of jackrabbit-jcr-commons in your classpath? The TimeSeriesAverage was
made public with JCR-3855 long time back. So unless you are using a
version < 2.10 you should not be getting this error
Chetan Mehrotra
Re: Oak and Mongo
Posted by Clay Ferguson <wc...@gmail.com>.
I am using the latest stable spring boot, which provides some version of
appropriate mongodb version, and also i just upgraded to latest stable
Jackrabbit:
All versions can be gleaned from this:
https://github.com/Clay-Ferguson/meta64/blob/master/pom.xml
BTW: The reason I love spring-boot is that one of it's primary purposes is
to let you start with a 'known stack' of versions of things that work well
together.
Best regards,
Clay Ferguson
wclayf@gmail.com
On Mon, May 22, 2017 at 8:44 AM, Ron Wheeler <rwheeler@artifact-software.com
> wrote:
> Does Oak work with the latest version (3.4.2) of MongoDB?
>
>
> I could not get the code on http://jackrabbit.apache.org/o
> ak/docs/construct.html to work.
>
> getDB("test2")
>
> is flagged as deprecated.
>
> The
>
> Exception in thread "main" java.lang.IllegalAccessError: tried to access
> class org.apache.jackrabbit.stats.TimeSeriesAverage from class
> org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats
> at org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.getAvg
> TimeSeries(BlobStoreStats.java:200)
> at org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats.<init>
> (BlobStoreStats.java:75)
> at org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builde
> r.configureBlobStore(DocumentMK.java:1296)
> at org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builde
> r.setBlobStore(DocumentMK.java:669)
> at org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builde
> r.setMongoDB(DocumentMK.java:663)
> at org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builde
> r.setMongoDB(DocumentMK.java:634)
> at org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builde
> r.setMongoDB(DocumentMK.java:684)
> at com.artifact_software.communication.InitiateDatabase.
> getNodeStore(InitiateDatabase.java:109)
> at com.artifact_software.communication.InitiateDatabase.main(In
> itiateDatabase.java:29)
>
> I have broken the example down into smaller chunks that should do the same
> thing as the code in the example and this is the function that fails
>
> private static DocumentNodeStore getNodeStore(){
> DB db = new MongoClient("127.0.0.1", 27017).getDB("test2");
> DocumentNodeStore ns = new DocumentMK.Builder().
> setMongoDB(db).getNodeStore();
> return ns;
> }
>
>
> --
> Ron Wheeler
> President
> Artifact Software Inc
> email: rwheeler@artifact-software.com
> skype: ronaldmwheeler
> phone: 866-970-2435, ext 102
>
>