你是否遇到過這些問題,自己的javaweb項目本地運行一切正常,但是一旦轉移到阿里服務器之類的.就出現以下問題.
1 jsp無法解析java類
2 Only a type can be imported. XXXXXXX resolves to a package 像這樣的瘟疫一樣的報錯
3 <%@ page import="引用的java類"%> 就是用不了,報錯.
4 Unable to compile class for JSP
如果有以上的問題,你肯定已經備受折磨和蹂躪希望這里是終點.
前提是之前在自己本機測試后已經沒有問題了,這就說明,項目里面的java,servlet,jsp,html等等的語法邏輯沒有問題了.像有這些語法錯誤的和mysql-connector-java-5.1.39這樣包沒有安裝好的,屬於低級類錯誤,不費口舌.查查百度好解決.
網上好多說什么版本相沖突,什么tomcat一定要比jdk的版本大或者等於.有一定道理也能解決一些人問題,但是沒有說到實質.上述四個問題的人依然解脫不了苦海還要忍受着折磨.
現在我告訴你問題的實質,就是你的Java類線上服務器不認.找不到!跟環境有直接關系,很有可能的就是服務器上你沒有部署JDK,環境就是一張破網,最頭疼.只要一個地方沒到位就會出錯.而且很隱藏,不容易發現問題實質.有jdk和tomcat的版本沖突,也有windows環境和Linux環境之間的沖突.最徹底的從根上解決問題,就是JDk和tomcat版本統一,windows版本和Linux 版本不要摻和分清楚,找到對應的版本把環境從新部署一下.才可以徹底解決問題.詳細看下文!
如何控制我的雲服務器?怎么用電腦和它傳輸文件呢?
是否有軟件可以滿足我控制雲服務器的需求?我想用電腦和它傳輸文件怎么辦?
答:的確有滿足你需求的軟件。那么我就向你推薦兩款好用的軟件並簡單介紹一下這兩個軟件作用:
(1)a.控制雲服務器軟件:Xshell b.能和電腦傳輸的軟件:Xftp
(2)我簡單介紹一下這兩款軟件。Xshell:能在Windows界面下訪問遠端不同系統下的服務器。簡單來說,你可以通過這款軟件控制雲服務器ECS。Xftp:基於 MS windows平台的功能強大的SFTP、FTP文件傳輸軟件。簡單來說,通過這款軟件你可以在你的電腦和雲服務器之間傳輸文件。
PS:還有很多能實現類似功能的軟件。如果你想了解更多,推薦你看看Putty、XShell、SecureCRT、SSH Secure Shell Slient哪個好用?
3.2 我覺得Xshell和Xftp不錯!那我應該從哪里下載它們呢?
答:我都幫你整理好了。下面就貼出兩個軟件的下載地址:
Xshell:Xshell官方下載鏈接
Xftp:Xftp官方下載鏈接
PS:這兩個文件下載好了后免安裝,雙擊即可運行。
3.3 軟件都下載好了!怎么使用Xshell和Xftp啊?
答:別着急,按照我下面步驟一步步做:
(1)運行Xshell。
(2)新建會話屬性,詳細步驟請看下圖3.32。
(3)連接會話,具體看下圖3.33。
(4)輸入用戶名,具體看下圖3.34。
(5)輸入密碼,具體看下圖3.35。注意:如果你忘記或者未設置你的密碼可進入ECS控制台-實例列表-重置密碼。重置密碼成功后記得重啟服務器。
(6)成功連接界面如下圖3.36。
(7)登錄Xpft。這里介紹兩種方法。a.點擊Xshell上方導航欄的窗口-傳輸新建文件即可快速免密運行Xpft軟件,具體看下圖3.37。b.直接運行Xpft,輸入用戶名和密碼后即可連接服務器。
(8)Xftp運行界面如下圖3.38。
如何在雲服務器下部署Java Web項目?
4.1 在雲服務器下部署 Java一共提供幾種方式?不同方式優缺點是什么?
答:一共三種方式。這三種方式分別是Java鏡像部署、一鍵安裝包部署和手動部署。前兩種方式優點是方便快捷,缺點是要花錢!而且價格個人覺得不便宜,Java鏡像部署一個月要¥80,一鍵安裝包部署雖然一次只要5塊,但是本文作者沒試過也就不好評價。而手動部署方式的優缺點正好與前兩種方式相反,它優點是免費同時修煉了你的技術,缺點就是稍微費事了點。
4.2 我該選擇哪種方式部署Java項目呢?
答:(1)如果你不差錢或者時間緊迫的話,你可以選擇Java鏡像部署或一鍵安裝包部署。因為我沒試過這兩種方式,所以具體就不介紹了。具體操作方式請看阿里雲官方介紹Java鏡像部署或一鍵安裝包部署。(2)如果你傾向於修煉技術的話,你還是選擇手動部署吧,而我個人也推薦這個部署方式,下文我將詳細介紹怎樣手動部署。
4.3 手動部署需要做什么准備工作呢?
答:你需要下載在Java jdk安裝包和Tomcat。我下面給出它們的官方下載鏈接:
Java jdk:Java jdk官方下載鏈接(下載“jdk-序號-linux-x64.tar.gz”版本)
Tomcat:Tomcat官方下載鏈接(點擊首頁左側Tomcat 8,下載“tar.gz (pgp, md5, sha1)”)
4.4 jdk安裝包我都下載好了,我該怎么安裝jdk呢?
答:(1)首先打開Xshell和Xftp,用Xftp在雲服務器創建文件夾,具體做法如下圖4.41。
(2)將jdk安裝包和tomcat安裝包復制粘貼到雲服務器對應的文件夾下。
(3)在Xshell輸入指令,解壓jdk安裝包到指定文件夾,解碼指令如下圖4.43:
#tar -xvf jdk-版本編號-linux-x64.tar.gz-C/usr/java/jdk/
(4) 解壓完畢后jdk文件夾里會有對應文件,開始配置環境變量,如下圖4.44,具體指令如下:
# sudo vi /etc/profile
export JAVA_HOME=/usr/java/jdk/jdk版本編號_121
export JRE_HOME=/usr/java/jdk/jdk版本編號_121/jre
export CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH
編輯完內容后,按下Esc鍵,並輸入“:wq”,然后回車可以保存退出。
(5)保存完畢后輸入下面指令:
#source /etc/profile
(6)驗證是否成功,如下圖4.46,輸入下面驗證指令:
# java -version
4.5 jdk安裝好了,那tomcat又要如何安裝?
答:別着急!tomcat安裝要輕松許多,具體安裝步驟如下:
(1)解壓tomcat,解壓指令如下:
# tar -xvf apache-tomcat-版本編號.tar.gz -C /usr/java/tomcat/
(2)進入解壓文件夾下的bin文件夾,指令如下:
#cd /usr/java/tomcat/apache-tomcat-版本編號/bin/
(3)編輯setclasspath.sh 腳本,指令如下:
# sudo vi setclasspath.sh
(4) 添寫如下內容:
export JAVA_HOME=/usr/java/jdk/jdk版本編號
export JRE_HOME=/usr/java/jdk/jdk版本編號/jre
(5)保存編輯內容,按下Esc鍵,並輸入“:wq”,然后回車可以保存退出。
(6)啟動tomcat,指令如下:
#./startup.sh
4.6 jdk和tomcat都弄好了,接下來可以用瀏覽器訪問我的雲服務器嗎?
答:當然可以!你可以從瀏覽器訪問,輸入http://雲服務器的ip:8080就能訪問啦!效果如下圖4.6。
4.7 我部署自己的項目怎么做?
答:將項目上傳到 Tomcat文件夾下的 Webapps 文件夾里就行。上傳好了后,瀏覽器訪問即可。例如:http://雲服務器ip地址:8080/index/one.html等。
4.8 怎么通過我的域名訪問我的網站呢?
答:別着急,你需要解析你的域名。你先登錄阿里雲,再控制台點擊域名與網站(萬網)下的域名,然后點擊解析,請看下圖4.8。解析好了后在瀏覽器輸http://www.域名.com:8080即可訪問。
開機自啟動Tomcat:
進入Tomcat的bin目錄:# cd /usr/tomcat/apache-tomcat-9.0.13/bin
:# ls
可以看到有一個startup.sh腳本文件,用來啟動tomcat服務:./startup.sh
6.在瀏覽器中進行訪問:http://ip地址:端口號(默認8080)
每次開機都要啟動tomcat,網上看了好多都是用shell腳本來實現tomcat開機自啟動,后來看到一種方法,直接修改系統文件來實現,已經實踐過,方法有效。
1.修改腳本文件rc.local:vim /etc/rc.d/rc.local
這個腳本是使用者自定的開機啟動程序,可以在里面添加想在系統啟動之后執行的腳本或者腳本執行命令
2.添加如下內容:
export JAVA_HOME=/usr/java/jdk1.8.0_131
/usr/tomcat/apache-tomcat-9.0.13/bin/startup.sh start

3.esc 退出編輯,:wq 保存修改
4.將rc.local修改為可執行
chmod 777 /etc/rc.d/rc.local
JSP環境 下面就安裝一個MySQL就行了
CentOS7 yum方式安裝MySQL5.7
在CentOS中默認安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之后可以直接覆蓋掉MariaDB。
1 下載並安裝MySQL官方的 Yum Repository
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下載了安裝用的Yum Repository,大概25KB的樣子,然后就可以直接yum安裝了。
[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
之后就開始安裝MySQL服務器。
[root@localhost ~]# yum -y install mysql-community-server
這步可能會花些時間,安裝完成后就會覆蓋掉之前的mariadb。

至此MySQL就安裝完成了,然后是對MySQL的一些設置。
2 MySQL數據庫設置
首先啟動MySQL
[root@localhost ~]# systemctl start mysqld.service
查看MySQL運行狀態,運行狀態如圖:
[root@localhost ~]# systemctl status mysqld.service

此時MySQL已經開始正常運行,不過要想進入MySQL還得先找出此時root用戶的密碼,通過如下命令可以在日志文件中找出密碼:
[root@localhost ~]# grep "password" /var/log/mysqld.log

如下命令進入數據庫:
[root@localhost ~]# mysql -uroot -p
輸入初始密碼,此時不能做任何事情,因為MySQL默認必須修改密碼之后才能操作數據庫:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
這里有個問題,新密碼設置的時候如果設置的過於簡單會報錯:

原因是因為MySQL有密碼設置的規范,具體是與validate_password_policy的值有關:

MySQL完整的初始密碼規則可以通過如下命令查看:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
密碼的長度是由validate_password_length決定的,而validate_password_length的計算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
我的是已經修改過的,初始情況下第一個的值是ON,validate_password_length是8。可以通過如下命令修改:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
設置之后就是我上面查出來的那幾個值了,此時密碼就可以設置的很簡單,例如1234之類的。到此數據庫的密碼設置就完成了。
但此時還有一個問題,就是因為安裝了Yum Repository,以后每次yum操作都會自動更新,需要把這個卸載掉:
[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch
此時才算真的完成了。

