-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Class path contains multiple SLF4J bindings #26
Comments
Maybe this has something to do with the Logback library used in both Silicon and ViperServer. If that's the case, something might have changed in the duplicate resolution policy of "sbt assembly", the one that's specified in ViperServer's build.sbt |
The problem is that both |
@fpoli I'm not sure whether I understand this issue correctly. Are you saying that we should assemble just one big ViperServer.jar file and release that one (without any other jars)? |
I mean that if the server is released with a folder of Releasing the server as a single "fat/uber" jar as you mentioned would also be fine for me, but to do that you would have to solve the same problem with the dependencies: Which one should end up in the final jar if both
We already download the jars from the url used by the Prusti-IDE. Having GitHub releases would work too. |
I see thanks a lot for the link! So basically there should be one or more jars containing the dependencies of Silicon, Carbon, and ViperServer (such as SLF4J) and separate jars for Silicon, Carbon, and ViperServer. In particular |
For what it's worth, Nagini has had this output for ages if Silicon and Carbon were both on the classpath (Nagini usually uses Silicon and Carbon fat jars, and doesn't use ViperServer). I'm fine with any solution as long as it's still possible to create Silicon and Carbon fat jars with all dependencies as before. @fpoli Regarding the conflict resolution if ViperServer is released as one big jar file, is that not something SBT can do by default? |
I tried to figure out where all the dependent jars are coming from and how I could get SBT to create these: Based on the Jenkins configs, it looks like I currently tend to propose in the next Viper meeting to change the Viper Tools as follows:
To address the versioning of nightly releases that Federico would like to have, I would use (in addition to the releases done via Jenkins / our webpage) GitHub releases. Either ViperServer creates the same looking release zip containing the individual backends or each repo (Silicon, Carbon, and ViperServer) creates releases just containing its fat JAR. |
Hi all, Couple of comments:
|
Is the new Github release going to fix this? |
@fpoli yes. There are actually two fixes: Each ViperServer release has a One word of caution though: do not depend on the ViperTools artifacts that you currently see in releases. They will move to the viper-ide repo with one of the upcoming PRs |
In Prusti we use the Viper JARs provided by the ViperServer artifact. Recently, we started getting the following message on stdout:
Apparently, the same class is in multiple JARs. I suspect that this is caused by the recent changes to Viper's build system.
The text was updated successfully, but these errors were encountered: