Seeking Help: Resolving javax.servlet.UnavailableException Issue

Hello everyone,

I've encountered an issue during development and I'm seeking assistance from the community to resolve it. I followed the "How to build, test and run" guide in OpenRefine's documentation to start the project. After successfully configuring the project, including downloading all dependencies and plugins, I encountered the following exception:

rubyCopy code

Exception in thread "main" javax.servlet.UnavailableException: Class loading error for holder refine==com.google.refine.RefineServlet@c847b26d{jsp=null,order=1,inst=true,async=false,src=DESCRIPTOR:file:///D:/develop/OpenRefine/main/webapp/WEB-INF/web.xml,FAILED}
    at org.eclipse.jetty.servlet.BaseHolder.doStart(BaseHolder.java:104)
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:369)
    at com.google.refine.RefineServer.configure(Refine.java:342)
    at com.google.refine.RefineServer.init(Refine.java:246)
    at com.google.refine.Refine.init(Refine.java:122)
    at com.google.refine.Refine.main(Refine.java:116)

I'm puzzled about the cause of this exception and how to resolve it. I haven't made any modifications since obtaining the project from GitHub. I'm using Eclipse Jetty as the servlet container, and my project includes com.google.refine.RefineServlet. I've attempted to reconfigure the project, but the issue persists.

I would greatly appreciate any suggestions or insights from the community on how to address this exception. If you have any ideas or experiences to share, please feel free to do so. Thank you very much for your assistance!

Hi,

Thanks for reaching out about this problem!
Can I ask how exactly you are launching OpenRefine? Do you do it from the command-line (in which case, which command do you run) or from your IDE (which one? how did you set it up?).

When I encounter this sort of problem, I run ./refine clean (on Linux / MacOS) or refine.bat clean (on Windows). Then you can start OpenRefine again.

Hi T-Rex,

javax.servlet.UnavailableException: indicates that there’s a problem with loading a class required by your servlet. This could be due to missing dependencies.

Have you tried the following;

  • Making sure all the necessary libraries are included in your project’s build path
  • Is the Servlet API classpath configuration right?
    Regards,
    Redeem Grimm

Thanks so much for your assistance, @Redeem_Grimm and @antonin_d. I found that after running Maven's compile operation, the project's dependencies were correctly resolved and added to the project, including the libraries required by com.google.refine.RefineServlet . This resolved the class loading error and the exception caused by missing dependencies. Now I can start working on my project.

1 Like

Glad you were able to resolve it. Let me know if you need any other assistance :slight_smile: