簡體   English   中英

Tomcat 7 和 Java 8 在樹莓派上

[英]Tomcat 7 with Java 8 on Raspberry Pi

UPDATE tomcat8 似乎在這種情況下工作,因為我可以根據需要打開 /manager/ 頁面。 雖然這不能解決這里的原始問題狀態,但我建議您在這種情況下使用 debian backports 中的 tomcat8!

Raspbian 提供當前的 Java 8 版本

root@raspberrypi:/etc/apt# java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

安裝 tomcat 7 后,我恢復到 debian backports 提供的 tomcat7 版本,它是

root@raspberrypi:/etc/apt# dpkg -l |grep tomcat
ii  libtomcat7-java                       7.0.56-1~bpo70+2                        all          Servlet and JSP engine -- core libraries
ii  tomcat7                               7.0.56-1~bpo70+2                        all          Servlet and JSP engine
ii  tomcat7-admin                         7.0.56-1~bpo70+2                        all          Servlet and JSP engine -- admin web applications
ii  tomcat7-common                        7.0.56-1~bpo70+2                        all          Servlet and JSP engine -- common files

根據tomcat7 不編譯 jsp 示例應該可以工作。 但是,情況並非如此,因為管理器頁面給我留下了以下錯誤:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [1] in the generated java file: [/var/lib/tomcat7/work/Catalina/localhost/manager/org/apache/jsp/index_jsp.java]
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:477)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
    org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)

有誰知道這里的實際問題可能是什么?

如問題所述,Raspbian 提供的 Tomcat 不適用於 Java 8。我設法按照此博客上的說明安裝了 Tomcat 8。 為了避免鏈接錯誤並糾正一個小錯誤,我將幾乎按字面意思引用那里的文本(針對 8.0.24 版進行了更新):

在樹莓派上安裝 Apache Tomcat 8

在我的 Raspberry Pi 上,我已經安裝了 Apache 2 HTTP 服務器,因此本文對 Tomcat 進行了基本的安裝和配置。 首先,更新所有已安裝的軟件包:

 $ sudo apt-get update

確認 Java 已經安裝:

 pi@raspberrypi /usr/bin $ java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

登錄pi用戶的主目錄並下載所需的Tomcat版本:

 $ wget http://mirrors.axint.net/apache/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz

提取壓縮的 tarball:

 $ tar xvf apache-tomcat-8.0.24.tar.gz

添加以下用戶 XML 元素作為~/apache-tomcat-8.0.24/conf/tomcat-users.xml的 tomcat-users 父元素的最后一個子元素(這將創建一個名為“system”的管理員帳戶,其密碼為“raspberry ”):

 <user username="system" password="raspberry" roles="manager-gui"/>

更改以下目錄的目錄權限,因為默認情況下,pi Linux 用戶無法寫入它們:

[注意:我不必執行此步驟,因為在 8.0.24 版本中,沒有目錄apache-tomcat-8.0.24/work/Catalina ]

在/etc/init.d目錄下添加一個名為tomcat的啟動腳本,內容如下:

 #!/bin/sh # /etc/init.d/tomcat # starts the Apache Tomcat service ### BEGIN INIT INFO # Provides: tomcat # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Short-Description: Start/stop tomcat application server ### END INIT INFO export CATALINA_HOME="/home/pi/apache-tomcat-8.0.24" case "$1" in start) if [ -f $CATALINA_HOME/bin/startup.sh ]; then echo $"Starting Tomcat" /bin/su pi $CATALINA_HOME/bin/startup.sh fi ;; stop) if [ -f $CATALINA_HOME/bin/shutdown.sh ]; then echo $"Stopping Tomcat" /bin/su pi $CATALINA_HOME/bin/shutdown.sh fi ;; *) echo $"Usage: $0 {start|stop}" exit 1 ;; esac

使用 update-rc.d 命令將適當的鏈接添加到 /etc/rc?.d 目錄:

 $ sudo update-rc.d tomcat defaults

測試tomcat服務器是否啟動:

 $ sudo /etc/init.d/tomcat start

在 Web 客戶端上,將瀏覽器指向http://”Raspberry Pi IP Address”:8080

雄貓截圖

測試tomcat服務器是否停止:

 $ sudo /etc/init.d/tomcat stop

最后,重新啟動系統,Tomcat 應用程序服務器現在應該會在啟動時自動啟動,在系統關閉時也是如此。

所有學分都歸於周五晚上項目。

需要指出的一件事:對我來說,作為一個鐵桿 Linux 用戶,這個解決方案聽起來有點 hacky,在用戶的主目錄中安裝軟件,但它有效。

在樹莓派上安裝 Apache tomcat 新版本的步驟:

1)sudo apt-get 更新

2)sudo apt-get install default-jdk

3)sudo wget http://mirrors.estointernet.in/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.zip

4)sudo apt-get install 解壓

5)sudo 解壓 apache-tomcat-8.5.47.zip

6)cd apache-tomcat-8.5.47/bin/

7) 須藤 chmod 700 *.sh

8) 須藤 ./startup.sh

如果您收到 404 錯誤,或者如果您想在端口 80 上安裝 apache tomcat,請訪問以下鏈接以了解如何執行此操作。

http://www.bytesofgigabytes.com/raspberrypi/install-apache-tomcat-on-raspberry-pi/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM