Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] creating runnable wars with maven

According to this article:

When trying to run:

java -jar myproject.war

I get the main-class error:

Exception in thread "main" java.lang.NoClassDefFoundError: com/myprjoect/path/to/main/ClassName

According to that article the issue is: "The problem is easy to understand: when starting Java with -jar, it expects a "normal" file structure. So if the Main-Class is "de.jowisoftware.Main", Java looks for de/jowisoftware/Main.class. The classloader does not understand the concept, that, in war files all class files are in WEB-INF/classes. If jetty is included in the war file, it is included as a jar file, so the classloader has to support nested archives. The default one doesn't. Thankfully, there are solutions."

What options do I have, is it basically how the author of the blog posts states?  

Or is the alternative ways to embedding jetty and then launching it?

I have this:

ProtectionDomain protectionDomain = HttpServer.class.getProtectionDomain();
        String warFile = protectionDomain.getCodeSource().getLocation().toExternalForm();
        String currentDir = new File(protectionDomain.getCodeSource().getLocation().getPath()).getParent();

        WebAppContext webAppContext = new WebAppContext(warFile, contextPath);

        resetTempDirectory(webAppContext, currentDir);



Back to the top