我使用vaadin和OSGi創建模塊化應用程序。經過長時間的戰鬥,我能夠成功部署應用程序。但是,我無法加載樣式。當我嘗試進入 http://localhost:8080/myapp/VAADIN/themes/myTheme/styles.css
我有以下異常:Vaadin/OSGi:找不到ScssStylesheet類
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: com/vaadin/sass/internal/ScssStylesheet
com.vaadin.server.VaadinServlet.serveOnTheFlyCompiledScss(VaadinServlet.java:957)
com.vaadin.server.VaadinServlet.serveStaticResourcesInVAADIN(VaadinServlet.java:790)
com.vaadin.server.VaadinServlet.serveStaticResources(VaadinServlet.java:760)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:257)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.ClassNotFoundException: com.vaadin.sass.internal.ScssStylesheet
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(ClassLoader.java:356)
com.vaadin.server.VaadinServlet.serveOnTheFlyCompiledScss(VaadinServlet.java:957)
com.vaadin.server.VaadinServlet.serveStaticResourcesInVAADIN(VaadinServlet.java:790)
com.vaadin.server.VaadinServlet.serveStaticResources(VaadinServlet.java:760)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:257)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)[/code]
com.vaadin.sass.internal.ScssStylesheet
類是由vaadin主題編譯器,7.x.x.jar提供,但服務器不會導入這個包。然後,我通過在vaadin服務器的MANIFEST中添加DynamicImport-Package: *
來「破解」vaadin服務器軟件包。以前的例外不會出現,但我得到的org.w3c.css.sac.CSSException
相同。請注意,通過在tomcat上部署應用程序.war文件,我沒有錯誤,並且應用程序看起來像我期望的(因爲所有庫都添加到WEB-INF/lib下,而tomcat將它們添加到類加載器中)。所以,問題是純粹的OSGi。
我注意到它在基地Vaadin論壇(線程[here](https://vaadin.com/forum#!/thread/3177168)。)。我有這個錯誤,因爲Vaadin在請求時試圖編譯styles.scss。在OSGi環境中,它不能很好地工作。所以我使用了一個編譯的主題(即:.css文件)。 – Mohammed 2013-05-14 07:02:15