我是java新手。我正在 tomcat 上开发一个网络服务。当我在 webapps 文件夹中部署 WAR 文件时,
严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart 异常启动过滤器 [SparkFilter] javax.servlet.ServletException:java.lang.ClassCastException:HelloWorld 无法转换为spark.servlet.SparkApplication
这个错误可以在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(){},但是当我部署在服务器上时,我无法通过服务器将内容复制到剪贴板。和服务器有关系吗?仅安装了 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>
关于javax.servlet.ServletException : java. lang.ClassCastException : XXX cannot be cast to spark. servlet.SparkApplication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58839319/