AFAIK如果我使用WebServlet注释我不应该需要web.xml。 我正在使用gradle尝试使用Google App Engine Standard本地服务器,但尝试查找web.xml失败。
C:\ Projects \ x \ x \ Research \ testeng> gradle appengineRun
2018年3月28日 1:17:18 PM java.util.prefs.WindowsPreferences
警告: 无法在root上打开/创建prefs根节点Software \ JavaSoft \ Prefs 0x80000002。 Windows RegCreateKeyEx(...)返回错误代码5 28,20188 1:17:18 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
SEVERE:收到异常处理 C:\项目\ X \ X \研究\ testeng \建立\爆炸,testeng \ WEB-INF \ web.xml中
com.google.apphosting.utils.config.AppEngineConfigException:无法 定位 C:\项目\ X \ X \研究\ testeng \构建\分解-testeng \ WEB-INF \ web.xml中
我做错了什么......?
我得到了一个servlet的存根
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
我的build.gradle非常接近Using Gradle and the App Engine Plugin中使用的内容:
buildscript { // Configuration for building
repositories {
jcenter() // Bintray's repository - a fast Maven Central mirror & more
mavenCentral()
}
dependencies {
classpath 'com.google.cloud.tools:appengine-gradle-plugin:+' // latest App Engine Gradle tasks
}
}
repositories { // repositories for Jar's you access in your code
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots' // SNAPSHOT repository (if needed)
}
mavenCentral()
jcenter()
}
apply plugin: 'java' // standard Java tasks
apply plugin: 'war' // standard Web Archive plugin
apply plugin: 'com.google.cloud.tools.appengine' // App Engine tasks
sourceSets {
// main.kotlin.srcDirs += "src/main/kotlin"
main.java.srcDirs += "src/main/java"
}
dependencies {
compile 'com.google.appengine:appengine-api-1.0-sdk:+' // Latest App Engine Api's
providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
compile 'jstl:jstl:1.2'
// Add your dependencies here.
// compile 'com.google.cloud:google-cloud:+' // Latest Cloud API's http://googlecloudplatform.github.io/google-cloud-java
testCompile 'junit:junit:4.12'
testCompile 'com.google.truth:truth:0.33'
testCompile 'org.mockito:mockito-all:1.10.19'
testCompile 'com.google.appengine:appengine-testing:+'
testCompile 'com.google.appengine:appengine-api-stubs:+'
testCompile 'com.google.appengine:appengine-tools-sdk:+'
}
// Always run unit tests
appengineDeploy.dependsOn test
appengineStage.dependsOn test
appengine { // App Engine tasks configuration
deploy { // deploy configuration
}
}
test {
useJUnit()
testLogging.showStandardStreams = true
beforeTest { descriptor ->
logger.lifecycle("test: " + descriptor + " Running")
}
onOutput { descriptor, event ->
logger.lifecycle("test: " + descriptor + ": " + event.message )
}
afterTest { descriptor, result ->
logger.lifecycle("test: " + descriptor + ": " + result )
}
}
group = "com.testeng" // Generated output GroupId
version = "1.0-SNAPSHOT" // Version in generated output
sourceCompatibility = 1.8 // App Engine Flexible uses Java 8
targetCompatibility = 1.8 // App Engine Flexible uses Java 8
答案 0 :(得分:1)
答案 1 :(得分:0)
解决了它。
我使用的appengine-web.xml与appengine-web.xml Reference中的示例相同。 添加了运行时元素并删除了未使用过这就是它现在的样子:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<runtime>java8</runtime>
<threadsafe>true</threadsafe>
</appengine-web-app>
答案 2 :(得分:0)
这不是答案,而是在其他人遇到类似情况时节省时间的提示。
我同时拥有一些servlet的web.xml条目和一些带WebServlet注释的servlet。在这种情况下,带注释的servlet不会在GAE Java Standard环境中注册为处理程序。在本地没有问题。