易班接入(Java)遇到的一些问题

最近和同学组队两个人参加了学院举办的一个小比赛,专业组的内容主要是开发一个网站,要接入易班,内容自定。

我们当时没有想着特别认真对待,讨论一番后决定做个适合大学生信息检索的导航站。

由于好久没写java了,所以一开始用的是javaweb的servlet进行基础开发,肝了几天总算实现了基本功能,其中踩了几个比较大的坑,在这里记录一下。

如何导入本地jar包

首先引入易班提供的jar包,由于给的是本地jar包,之前都是maven引入坐标的,所以先去查了一下本地jar包的引用方式,可以通过maven命令行的方式把jar包导入本地仓库,再通过坐标进行引用,另一种方式是直接把jar包放在项目的一个目录下,

2113248901.png

我放在了resources的jar目录下,然后通过${pom.basedir}/xxx/...的方式进行相对路径引入,${pom.basedir}是项目的根目录

易班提供的jar包缺少依赖

写好易班的接口之后,在进行测试时会爆出ClassNotFoundException(类未找到异常),排查之后发现竟然是易班jar包内部引用了httpclient而我的项目里没有引用,话说这不应该是在易班依赖里会有依赖传递的吗,难道易班那边打包的时候没把httpclient一块打包进来?通过引入对应的坐标解决

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>

易班请求协议报错

解决完内部类缺失之后,发送请求,又爆出一个错误:No appropriate protocol (protocol is disabled or cipher suites are inappropriate).

这个错误就有点东西了,网上的教程有改数据库的ssl为false的,但明显这里是易班接口的问题,不是数据库,有很多文章都指向直接修改jdk。

其根本原因并不是由于数据库配置,最后报的No appropriate protocol (protocol is disabled or cipher suites are inappropriate)这个才是关键,而导致这个问题的,竟是jdk版本过高导致,jdk1.8高版本对ssl做了限制,而我的jdk版本为jdk1.8.0_291

到这里我就有点懵住了,好家伙直接修改jdk?这错误只能通过修改源代码解决吗??

解决办法

打开jdk所在目录 cd /Library/Java/JavaVirtualMachines修改文件:vim /jdk1.8.0_291.jdk/Contents/Home/jre/lib/security找到如下内容:

jdk.tls.disabledAlgorithms=TLSv1.1, RC4, DES, MD5withRSA, \
                            DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
                            include jdk.disabled.namedCurves

去除 jdk.tls.disabledAlgorithms 中 SSLv3, TLSv1, TLSv1.1三项协议,然后重启项目即可

这里又有点小问题,我的是jdk17,目录有些不一样,修改的文件路径为:jdk-17.0.2\conf\security\java.security

在宝塔部署java项目

先来说说宝塔里第一次部署java项目的摸索。

在软件商店里搜索,可以看到宝塔里有好几个关于java运行的插件,有tomcat、java项目一键部署和java项目管理器,甚至现在宝塔的网站管理那里也有个java项目的按钮,一时间有点分不清要用哪个。

在宝塔官网找到了对应的教程:https://www.bt.cn/bbs/thread-76217-1-1.html

看完有一点点理解,但还是有些乱,按照在本地开发的时候,只要运行一个tomcat就行跑项目了,这样的话在服务器应该也是类似,只不过端口和映射之类的配置要麻烦些。

先说明,软件商店里的每个插件都是可以用的,有些之间是相互关联的,其实下一个能跑就行。我用的是Java项目一键部署插件,把本地项目打成war包之后,上传到web项目管理中显示的项目路径中,这里路径由于像上面说的,宝塔里有很多个可以跑java的插件,而且tomcat有好几个版本,加上和传统的php网站有些差别,所以项目路径是比较乱的,要记住自己使用的插件对应的tomcat目录和项目运行目录。上传war包后解压并删除,然后在项目管理器里启动即可。

但是在启动之后我的项目就出问题了,页面可以访问到(是静态页面的缘故),但接口全是404,也就是并没有启动成功的样子。在日志里排查,试错了很久,最终发现是jdk版本的问题,宝塔默认的是tomcat8对应1.8的版本,而我本地跑的时候用的是17。

这时候坑爹的就来了,宝塔竟然不支持修改jdk的版本,在论坛里搜索,发现有人说宝塔里的jdk目录是写死在程序里的,工作人员也对此类问题没有正确的解决方案。

既然如此,那就直接把自己需要的jdk,覆盖到tomcat默认对应的那个jdk目录下……很粗暴,但成功了,接口正常。

96 次浏览
2 次获赞
上一篇
评论已关闭
    4天前

    我java写个hello world都困难,哈哈

      4天前

      要不是进了你博客看看我就信了,看到你最近换到typecho,我准备从typecho换出来了哈哈哈,不想折腾PHP了

        4天前

        我java真不行,c语言写个hello world还差不多,哈哈 可以折腾的挺多的,hexo啥的

    8天前

    加油啊小九日,好好学习,毕业后君临天下!另外,写博客的习惯要记得坚持下去呀~

      7天前

      嗯嗯,一起努力~最近在学新的知识和尝试做一些项目,在学校的话一方面是忙没时间写哈哈哈,另一方面是能写的挺少的(一整天就是吃饭睡觉学习),不过等新的博客写出来之后,就能写点类似朋友圈的东西啦,随手记录就没太大的写作压力了哈哈哈。

微风忆夏