2016-12-01 26 views
-1

組み込みjetty 9.3.9サーバーをセットアップしようとしていますが、JettyサーバーのJSPサポートを設定しました。すべてのJSPページをロードし、私が受け取る - ServerStart.javaでJSP組み込みjettyのクラスをコンパイルできません9

Unable to compile class for JSP: ||An error occurred at line: [1] in the generated java file: [/tmp/jetty-0.0.0.0-8080-webapp-_webMvc-any-4185149399836239637.dir/jsp/org/apache/jsp/WEB_002dINF/views/index_jsp.java]|The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files||An error occurred at line: [1] in the generated java file: [/tmp/jetty-0.0.0.0-8080-webapp-_webMvc-any-4185149399836239637.dir/jsp/org/apache/jsp/WEB_002dINF/views/index_jsp.java]|The type java.io.ObjectInputStream cannot be resolved|Syntax error on token "<", ? expected after this token|

私のJSPサポートは、次のとおりです。

`public static void main(String[] args) throws Exception { 

    Server server = new Server(8080); 
    System.setProperty("org.apache.jasper.compiler.disablejsr199", "false"); 

    WebAppContext webAppContext = new WebAppContext(); 
    webAppContext.setDescriptor("/webMvc/src/main/webapp/WEB-INF/web.xml"); 
    webAppContext.setConfigurations(new Configuration[] { 
          new AnnotationConfiguration(), 
          new WebInfConfiguration(), 
          new WebXmlConfiguration(), 
          new MetaInfConfiguration(), 
          new FragmentConfiguration(), 
          new EnvConfiguration(), 
          new PlusConfiguration(), 
          new JettyWebXmlConfiguration() 
          }); 

    webAppContext.setAttribute("javax.servlet.context.tempdir", getScratchDir()); 
    webAppContext.setResourceBase("/webMvc/src/main/webapp/"); 
    webAppContext.setContextPath("/webMvc"); 
    webAppContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", 
          ".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/.*taglibs.*\\.jar$"); 

    webAppContext.setAttribute("org.eclipse.jetty.containerInitializers", jspInitializers()); 
    webAppContext.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager()); 
    webAppContext.addBean(new ServletContainerInitializersStarter(webAppContext), true); 
    webAppContext.setClassLoader(new URLClassLoader(new URL[0], this.getClass().getClassLoader()));      
    webAppContext.setParentLoaderPriority(true);  


    ProtectionDomain protectionDomain = ServerStart.class.getProtectionDomain(); 
    URL location = protectionDomain.getCodeSource().getLocation(); 
    webAppContext.setWar(location.toExternalForm()); 

    server.setHandler(webAppContext);   
    server.start(); 
    server.join(); 
}   

private File getScratchDir() throws IOException { 
     File tempDir = new File(System.getProperty("java.io.tmpdir")); 
     File scratchDir = new File(tempDir.toString(), "webMvc-jetty-jsp"); 
     scratchDir.mkdirs(); 
     return scratchDir; 
} 

private ServletHolder jspServletHolder() { 
    ServletHolder holderJsp = new ServletHolder("jsp", JettyJspServlet.class); 
        holderJsp.setInitOrder(0); 
        holderJsp.setInitParameter("logVerbosityLevel", "INFO"); 
        holderJsp.setInitParameter("fork", "false"); 
        holderJsp.setInitParameter("xpoweredBy", "false"); 
        holderJsp.setInitParameter("compilerTargetVM", "1.8"); 
        holderJsp.setInitParameter("compilerSourceVM", "1.8"); 
        holderJsp.setInitParameter("keepgenerated", "true"); 
        return holderJsp; 
}` 

マイプロジェクトの構造は - `

jettyStartup 
    |-src/main/java 
    |- ServerStart.java 
webMvc 
    |- src/main/java 
    | |- Package com.admin.controllers 
    | |- BaseController 
    |- src 
    |- main 
     |- webapp 
     |- META-INF 
     |- WEB-INF 
      |- web.xml 
      |- views 
      |-index.jsp 
      |-error.jsp 

`

私はwarファイルを作成し、桟橋サーバーにそれを養う(モジュラーあるために)MVCのためのサーバーと別の起動用に別のプロジェクトを持っています。私はJSPページを打つまで、すべてうまく動作します。

私のindex.jspは次のとおりです。

<%@ page import="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" %> 
<%@ page import="org.springframework.security.core.AuthenticationException" %> 

<!DOCTYPE html> 
    <head> 
     <link href="css/themes/jquery-ui.css" rel="stylesheet" type="text/css"/> 
     <link href="css/themes/page-theme.css" rel="stylesheet" type="text/css"/> 
     <link href="css/index.css" rel="stylesheet" type="text/css"> 
     <link href="css/jquery.modaldialog.css" rel="stylesheet" type="text/css"> 

     <script type="application/javascript" src="js/jquery/jquery-1.4.4.js"></script> 
     <script type="application/javascript" src="js/jquery/jquery-ui-1.8.10.custom.js"></script> 
     <script src="js/index.js" type="text/javascript"></script>   
    </head> 
    <body> 
     <div id="page-login" > 
       <form id="login" method="POST" action="j_spring_security_check" autocomplete="off"> 
        <div id="login-credentials">          
         <label>Username: 
           <input type="text" name="j_username" id="j_username"/> 
         </label> 
         <label> Password: 
           <input type="password" name="j_password" id="j_password" /> 
           <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
         </label> 
        </div> 
        <input type="submit" id="login-btn" value="Log in" /> 
        <div style="clear:right"></div> 
       </form> 
     </div>   
    </body> 
</html> 
+0

これは、あなたのJSPに自明ではないJavaコードを持っていない理由です。 –

+0

@ThorbjørnRavnAndersenコードはJSPの一部ではありません。埋め込みJettyサーバを起動するJavaクラス – devop

答えて

1

あなたはメソッドの内部メソッドを持っている、またはあなたがいずれかの方法の外にコードを持っています。あなたのコードの小片を取る...これは、例えば、コンパイルすることはありません:

public static void main(String[] args){ 
    public void file(){} 
} 

あなたはメソッド内のメソッドを持つことはできません。

  ProtectionDomain protectionDomain = ServerStart.class.getProtectionDomain(); 
      URL location = protectionDomain.getCodeSource().getLocation();   
      webAppContext.setWar(location.toExternalForm()); 

      private File getScratchDir() throws IOException { 
       File tempDir = new File(System.getProperty("java.io.tmpdir")); 
       File scratchDir = new File(tempDir.toString(), "webMvc-jetty-jsp"); 
       scratchDir.mkdirs(); 
       return scratchDir; 
      } 

それはこのような何かをやってと同じです。

プライベートメソッドを使用しようとしましたが、JSPでやろうとしていることをやり遂げることはできません。

すべてのコードをメソッドなしでインラインで配置する必要があります。好ましくは、のいずれかの JavaコードをJSP内に配置しないでください。

+0

混乱のために謝ってくれてありがとう、私はJavaコードをより明確に編集しました。この質問のJavaコードは、埋め込みJettyサーバーを起動するために使用されます。これはJSPの一部ではありません。 – devop

+0

次に、エラーの原因となっているファイルを含める必要があります。 '生成されたjavaファイルの行にエラーが発生しました:[1]:[/tmp/jetty-0.0.0.0-8080-webapp-_webMvc-any-4185149399836239637。 dir/jsp/org/apache/jsp/WEB_002dINF/views/index_jsp.java'これはindex.jspが正しくないことを示します –

+0

これは基本的なログインページです。私はロードしようとするすべてのJSPページでそのエラーを取得します。 index.jspを添付しました。それ以外のJSPページはすべて同様です。 – devop

関連する問題