1

(私のタイトルが誤解を招く/間違っている場合は、私が考えることができる最高のものを、より説明的なものを提案してください)

Spring Rooを使用して独自のWebアプリを作成しましたが、まだコードを編集していません。私はMavenとJettyを使用してWebアプリを構築して実行しています。以下を実行すると、すべてが正常に機能します。

mvn jetty:run

ただし、jarをパッケージ化してから直接実行すると、いくつかの奇妙な問題が発生します。

mvn package
java -jar target/dependency/jetty-runner.jar target/*.war

(「mvnjetty:run-exploded」と同じです)

メインページは正常に読み込まれますが、ナビゲーションリンクの1つをクリックすると(モデルを作成または一覧表示するため)、これらのエラーがブラウザーに出力されます(http:// localhost:8080 / pages / main.jsf)

HTTP ERROR 500

Problem accessing /pages/main.jsf. Reason:

/pages/nameMeaning.xhtml @25,80 value="#{applicationBean.getColumnName(column)}" Error Parsing: #{applicationBean.getColumnName(column)}
Caused by:

javax.faces.view.facelets.TagAttributeException: /pages/nameMeaning.xhtml @25,80 value="#{applicationBean.getColumnName(column)}" Error Parsing: #{applicationBean.getColumnName(column)}
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401)
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351)
at com.sun.faces.facelets.tag.jsf.ValueHolderRule$DynamicValueExpressionMetadata.applyMetadata(ValueHolderRule.java:129)
at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:398)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:159)
...
Caused by: javax.el.ELException: Error Parsing: #{applicationBean.getColumnName(column)}
at com.sun.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:171)
at com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:188)
at com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:232)
at com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:92)
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:385)
... 95 more
Caused by: com.sun.el.parser.ParseException: Encountered "(" at line 1, column 32.
Was expecting one of:

"}" ...
"." ...
"[" ...
">" ...
"gt" ...
"<" ...
"lt" ...
">=" ...
"ge" ...
"<=" ...
"le" ...
"==" ...
"eq" ...
"!=" ...
"ne" ...
"&&" ...
"and" ...
"||" ...
"or" ...
"*" ...
"+" ...
"-" ...
"?" ...
"/" ...
"div" ...
"%" ...
"mod" ...


at com.sun.el.parser.ELParser.generateParseException(ELParser.java:1664)
at com.sun.el.parser.ELParser.jj_consume_token(ELParser.java:1544)
at com.sun.el.parser.ELParser.DeferredExpression(ELParser.java:147)
at com.sun.el.parser.ELParser.CompositeExpression(ELParser.java:74)
at com.sun.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:139)
... 99 more
Caused by:

ここでpom.xmlファイルを参照してください:http://pastebin.com/6aPpYP47

4

2 に答える 2

2

同じエラーが発生し、解決しました。あなたの質問は間違っています。

これは、式パーサーによるものです。使用しました

#{applicationBean.getColumnName(column)}

あなたのnameMeaning.xhtmlで。そのパーサーの有効なELではありません。どちらかを変更する必要があります

#{applicationBean.getColumnName} 

のようなパラメータを渡します

 <f:param name="column" value="#{column}"/>

または、桟橋でel-api-2.2.jarパーサーを使用します。

于 2012-09-04T08:31:48.477 に答える
2

あなたを見てみると、pom.xmlあなたが異なるバージョンのJettyを実行していることは明らかです。これが問題の根本的な原因である場合とそうでない場合がありますが、バージョンが異なるとサーブレットコンテナ仕様のバージョンが異なるため、サーブレット3.0の機能であるものがJetty 8で機能し、Jetty 7では機能しないことがあります(これはサーブレット2.5IIRCです)

プラグインの構成を見ると、次のようになります。

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.4.v20120524</version>
            <configuration>
                <webAppConfig>
                    <contextPath>/${project.name}</contextPath>
                </webAppConfig>
            </configuration>
        </plugin>

桟橋ランナーを注入すると、桟橋をjetty:run使用することに気付くでしょう。8.1.4.v20120524

       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.3</version>
          <executions>
            <execution>
              <phase>package</phase>
              <goals><goal>copy</goal></goals>
              <configuration>
                <artifactItems>
                  <artifactItem>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-runner</artifactId>
                    <version>7.4.5.v20110725</version>
                    <destFileName>jetty-runner.jar</destFileName>
                  </artifactItem>
                </artifactItems>
              </configuration>
            </execution>
          </executions>
        </plugin>

java -jar jetty-runner.jar namename.warそして、Jettyを使用しているあなたと一緒に走る7.4.5.v20110725

他の誰かが指摘しているように、実際にはサーブレット3.0の機能であるEL 2.2を使用しているので、おそらく新しいバージョンのJettyRunnerにアップグレードする必要があります。

于 2012-09-07T09:52:40.153 に答える