eclipse-birt / birt

Eclipse BIRT™ The open source reporting and data visualization project.
http://www.eclipse.org/birt
Eclipse Public License 2.0
451 stars 389 forks source link

guava class included directly in birt runtime jar #1376

Closed rajn closed 1 year ago

rajn commented 1 year ago

Recently ran into a nosuchmethod and it turns out com.google.common.base.Predicate class is included directly in birt runtime jar. This class is also part of guava-xxx.jar. These two versions of this particular class are different. Wondering why the guava jar is not treated as a dependency for birt runtime? This is creating library conflict issues where opensaml comes into play as it calls guava's Predicate. edit: thanks @merks . Added images birt runtime

birt_runtime_jar

guava

guava_jar
merks commented 1 year ago

@rajn

You ought to provide some level of detail. E.g., where exactly are you seeing this? It's really easy to copy and paste screen captures...

@speckyspooky

One thing I found very questionable is the following approach of copying Maven jars and embedding them as libraries in bundles:

image

This might be the probably which which @rajn refers, though I can't be sure. In think in an OSGi runtime this is maybe not a big deal because the bundle does not export the packages of these libraries, but in a "flattened" non-OSGi runtime this could end up surfacing an ancient version of guava. It's doing some funky thing that I don't understand:

image

speckyspooky commented 1 year ago

@merks I take a look into the lib-folder of your screens and the jar files are very very old versions. The most of them are not longer supported and have better versions.

The way of the usage at libary together with the plugin configuration (extention point) seems to me the try to have the lib-jars accessable at the script context. Because it makes only sence in this way. But this has nothing to do with "real"-PlugIn dependecies.

And perhaps this could be one of our issues to the usage of slf4j.

speckyspooky commented 1 year ago

Additional information, we have an old ticke #951 the reason of it is that there are also the found lib-jars are listed and the hint that the hector-driver of "Apache Cassandra" is "dead" (since 2015).

(At the end it would be an option to exclude Cassandra in full and also such kind of dependencies.)

speckyspooky commented 1 year ago

@wimjongman What is your point of view to the aspect to clean up the cassandra implementation (#951)? Only the hector-data-source-driver because he is dead and we have different issues with the added jars.

From my point of view it make no sence to "feed a dead horse" and it is a good clearing point. The steps would be the same like @hvbtup oracle-clean-up (but only cassandra).

wimjongman commented 1 year ago

Yes it makes sense to clean it up.

speckyspooky commented 1 year ago

The Cassandra Scripted Data Source incl. Hector-runtime is removed with PR https://github.com/eclipse-birt/birt/pull/1419 and will be available with BIRT 4.14

So also the old jars and classes of Hector will removed.