![](/img/trans.png)
[英]java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
[英]Bazel java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
我剛剛開始將項目移植到bazel。 我有一個Java項目。 在我的主文件中,我有此代碼
ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
我能夠很好地構建代碼...但是,當我嘗試運行時,出現以下異常
java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
我正在使用依賴
maven_jar(
name = "javax_servlet_javax_servlet_api",
artifact = "javax.servlet:javax.servlet-api:3.1.0",
repository = "http://uk.maven.org/maven2/",
sha1 = "6bf0ebb7efd993e222fc1112377b5e92a13b38dd",
)
哪個應該有這個文件。 可能是什么問題。
java_binary(
name = "app",
main_class = "com.example.Main",
runtime_deps = [":allFiles"],
)
java_library(
name = "allFiles",
srcs = glob(["src/main/java/**/*.java"]),
resources = glob(["src/main/resources/**/*"]),
deps = [
"//thirdparty:javax_servlet_javax_servlet_api",
...
])
以上是我在BUILD
文件中的內容。 事實是,java庫allFiles
構建良好。 但是當我運行app
我得到了例外。 我知道調用主文件是因為我可以在Main.java文件中看到引發異常的行。
我發現了運行時錯誤。 最初,當我從maven pom文件生成依賴項時。 它給了我
maven_jar(
name = "javax_servlet_javax_servlet_api",
artifact = "javax.servlet:javax.servlet-api:3.0.1",
repository = "http://uk.maven.org/maven2/",
sha1 = "6bf0ebb7efd993e222fc1112377b5e92a13b38dd",
)
但是碼頭服務器需要的版本是3.1.0,所以我將代碼更改為
maven_jar(
name = "javax_servlet_javax_servlet_api",
artifact = "javax.servlet:javax.servlet-api:3.1.0",
repository = "http://uk.maven.org/maven2/",
sha1 = "6bf0ebb7efd993e222fc1112377b5e92a13b38dd",
)
但是我沒能適應sha1。 刪除sha1解決了該問題。 現在,既沒有構建錯誤,也沒有運行時錯誤。
最后
maven_jar(
name = "javax_servlet_javax_servlet_api",
artifact = "javax.servlet:javax.servlet-api:3.1.0",
repository = "http://uk.maven.org/maven2/",
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.