[英]java.lang.ClassCastException: cannot be cast to javax.servlet.Servlet
[英]javax.servlet.ServletException: java.lang.ClassCastException: XXX cannot be cast to spark.servlet.SparkApplication
我是 java 的新手。 我正在 tomcat 上開發 web 服務。 當我在 webapps 文件夾中部署 WAR 文件時,
嚴重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart 異常啟動過濾器 [SparkFilter] javax.servlet.ServletException: java.lang.ClassCastException: Hello ParkservletApplication 無法轉換為 sparkFilter.S
在 tomcat 的日志中可以看到這個錯誤。 我正在使用 sparkjava 來創建服務。
這是我的代碼
import spark.servlet.SparkApplication;
//import static spark.Spark.get;
import static spark.Spark.*;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Clipboard;
public class HelloWorld{
public static void main(String[] args){
get("/clipboard/:text", (req, res) -> {
StringSelection selection = new StringSelection(req.params(":text"));
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
return req.params(":text");
});
}
}
還有我的 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>sparkjava-hello-world</groupId>
<artifactId>sparkjava-hello-world</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<debug>true</debug>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce-java</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.8,)</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我的代碼是否有任何問題,或者在我的項目文件中導出為 WAR 文件時缺少哪些依賴項或插件或過程?
謝謝你的任何建議。
更新我發現我必須在@Override public void init(){} 中調用 function,但是當我在服務器上部署時,我無法通過服務器將內容復制到剪貼板。 跟服務器有關系嗎? 僅安裝了 OpenJDK。
您需要在依賴項中排除 Jetty:
<dependencies>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.7.2</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.