使用 Objectify 编译 Maven 项目时找不到 ObjectifyFilter class
ObjectifyFilter class not found when compiling Maven project with Objectify
我是 GAE 的新手,正在根据示例开发我的 Datastore 应用程序 https://cloud.google.com/appengine/docs/java/gettingstarted/usingdatastore
我的 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>DecisionTree</groupId>
<artifactId>DecisionTree</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
我的web.xml是
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<!-- Servlets -->
<servlet>
<servlet-name>greetServlet</servlet-name>
<servlet-
class>com.google.gwt.decisiontree.server.GreetingServiceImpl</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/decisiontree/greet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jsonDecisionTreeData</servlet-name>
<servlet-
class>com.google.gwt.decisiontree.server.JsonDecisionTreeData</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>jsonDecisionTreeData</servlet-name>
<url-pattern>/decisiontree/jsonData</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>constructDecisionTree</servlet-name>
<servlet-
class>com.google.gwt.decisiontree.server.ConstructDecisionTree</servlet-
class>
</servlet>
<servlet>
<servlet-name>insert_attribute_value</servlet-name>
<servlet-class>com.google.gwt.decisiontree.server.
InsertAttributeValueServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>constructDecisionTree</servlet-name>
<url-pattern>/decisiontree/construct</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>insert_attribute_value</servlet-name>
<url-pattern>/insert_attribute</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>DecisionTree.html</welcome-file>
</welcome-file-list>
<!-- for Objectify support, for Google Datastore -->
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.example.guestbook.OfyHelper</listener-class>
</listener>
</web-app>
DecisionTree.html 有以下 servlets 调用
<a href="decisiontree/construct?action=construct_decision_tree">Construct decision tree</a>
<br/>
<a href="decisiontree/construct?action=construct_svg_decision_tree">Construct SVG decision tree</a>
<br/>
<a href="decisiontree/construct?action=construct_svg_decision_tree_2">Construct SVG decision tree 2</a>
<br/>
<a href="decisiontree/insert_attribute">Insert attribute value</a>
作为编译的结果,我有警告
WARNING: EXCEPTION
java.lang.ClassNotFoundException:
com.googlecode.objectify.ObjectifyFilter
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ....
当我 运行 http://127.0.0.1:8888/DecisionTree.html 我得到
HTTP ERROR: 503
Problem accessing /DecisionTree.html. Reason:
SERVICE_UNAVAILABLE
Powered by Jetty://
我认为 Objectify 有问题。请帮助我!
Objectify 的当前版本是 5.1.5。您在 pom 中声明 4.0.1; ObjectifyFilter
可能当时不存在。使用现代版本。
我是 GAE 的新手,正在根据示例开发我的 Datastore 应用程序 https://cloud.google.com/appengine/docs/java/gettingstarted/usingdatastore 我的 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>DecisionTree</groupId>
<artifactId>DecisionTree</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
我的web.xml是
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<!-- Servlets -->
<servlet>
<servlet-name>greetServlet</servlet-name>
<servlet-
class>com.google.gwt.decisiontree.server.GreetingServiceImpl</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/decisiontree/greet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jsonDecisionTreeData</servlet-name>
<servlet-
class>com.google.gwt.decisiontree.server.JsonDecisionTreeData</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>jsonDecisionTreeData</servlet-name>
<url-pattern>/decisiontree/jsonData</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>constructDecisionTree</servlet-name>
<servlet-
class>com.google.gwt.decisiontree.server.ConstructDecisionTree</servlet-
class>
</servlet>
<servlet>
<servlet-name>insert_attribute_value</servlet-name>
<servlet-class>com.google.gwt.decisiontree.server.
InsertAttributeValueServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>constructDecisionTree</servlet-name>
<url-pattern>/decisiontree/construct</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>insert_attribute_value</servlet-name>
<url-pattern>/insert_attribute</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>DecisionTree.html</welcome-file>
</welcome-file-list>
<!-- for Objectify support, for Google Datastore -->
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.example.guestbook.OfyHelper</listener-class>
</listener>
</web-app>
DecisionTree.html 有以下 servlets 调用
<a href="decisiontree/construct?action=construct_decision_tree">Construct decision tree</a>
<br/>
<a href="decisiontree/construct?action=construct_svg_decision_tree">Construct SVG decision tree</a>
<br/>
<a href="decisiontree/construct?action=construct_svg_decision_tree_2">Construct SVG decision tree 2</a>
<br/>
<a href="decisiontree/insert_attribute">Insert attribute value</a>
作为编译的结果,我有警告
WARNING: EXCEPTION
java.lang.ClassNotFoundException:
com.googlecode.objectify.ObjectifyFilter
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ....
当我 运行 http://127.0.0.1:8888/DecisionTree.html 我得到
HTTP ERROR: 503
Problem accessing /DecisionTree.html. Reason:
SERVICE_UNAVAILABLE
Powered by Jetty://
我认为 Objectify 有问题。请帮助我!
Objectify 的当前版本是 5.1.5。您在 pom 中声明 4.0.1; ObjectifyFilter
可能当时不存在。使用现代版本。