你是否遇到过这些问题,自己的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
此时才算真的完成了。