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
NoClassDefFoundError: lancet/core$WsdlToDotnet when trying to run uberjar #18
Comments
@venantius: can you tell me something about your environment and how you're invoking autodoc? It does work on my system, but it does funky stuff to separate the information collection from the doc building, so I'm not sure. |
Sure. I'm running this on OS X 10.10.5, Lein 2.5.2, Java 1.8.0_60. Running
Then if I navigate to a directory that contains, say, ultra and invoke as follows: [william_jarvis@jackalope:ultra] 16:17:55 $ java -jar ../autodoc/target/autodoc-1.0.0-standalone.jar
Exception in thread "main" java.lang.NoClassDefFoundError: lancet/core$WsdlToDotnet (wrong name: lancet/core$wsdltodotnet)
...etc... |
Argh. I see the problem. lancet.core has both WsdlToDotnet and wsdltodotnet. I think this might work on Ubuntu and not on Mac, but I'm not sure. Let me see if this has been fixed in Lancet or maybe I can just drop my dependency on that library. |
This happens in lancet because it tries to create a list of ant tasks and turn them into functions. On the mac this breaks, I think, because when you make the uberjar, it temporarily pulls everything out of the source lancet jar into files so that it can create the uberjar. On the mac, file names can't differ by case only and, so, one class file gets overwritten by the other and goes into the uberjar wrong. In any case, lancet is old and we hate ant in general. This whole chunk of code was ripped out of leiningen years ago and leiningen has improved in a couple of ways that we can take advantage of here. First, it can now be used directly as a library, leiningen-core, so we don't need to cut and paste. Second, it uses pomegranate to compute dependencies and classpaths so lancet is now completely unnecessary. I'm going to take a shot at converting the collect-info-wrapper to use leiningen-core.classpath and see if we can drop the lancet dependency altogether. |
I'm not sure what the root cause of this is, but it seems to have been something other people have encountered at least once in the past.
I got this trying to run autodoc from an uberjar'd build of autodoc master. Figure at the very least we can document resolution steps in a google-able way :)
The text was updated successfully, but these errors were encountered: