JeeSite 4.0 开发环境部署运行调试(Eclipse)

原创
2018/02/27 22:25
阅读数 7.1W

环境要求

1、Java SDK 1.8 下载

2、Eclipse IDE for Java EE Mars 2 (4.5.2) 下载

3、Apache Maven 3.3+ 下载

4、MySql 5.7+ 下载

导入到Eclipse

1、检出JeeSite4源代码:

git clone https://gitee.com/thinkgem/jeesite4.git

2、拷贝web文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:jeesite-demo

3、打开pom.xml文件,修改第13行,artifactId为你的工程名,如:<artifactId>jeesite-demo</artifactId>

4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的jeesite-demo文件夹,然后点击 Finish 按钮,即可成功导入

5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为止

6、下载过程中你可以准备数据库环境了

初始化数据库

1、以MySql为例,最好配置下SQL模式,否则建表的时候可能会出现问题

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

2、 创建用户和授权

create user 'jeesite'@'%' identified by 'jeesite';
create database jeesite DEFAULT CHARSET utf8 COLLATE utf8_general_ci;  
grant all privileges on jeesite.* to 'jeesite'@'%' identified by 'jeesite';
flush privileges;

3、打开文件 /src/main/resources/config/jeesite.yml 配置JDBC连接

jdbc: 

  # Mysql 数据库配置
  type: mysql
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
  username: jeesite
  password: jeesite
  testSql: SELECT 1

4、若刚才导入到的Eclipse的项目已经完成加载jar并无错误,你就可以执行/bin/init-data.bat脚本初始化数据库了,第一次执行如果遇见table xxx doesn't exist的错误信息,忽略即可。

5、如果执行bat不成功,你也可以直接在Eclipse里找到com.jeesite.test.InitCoreData.javacom.jeesite.test.InitGenData.java两个文件并打开,然后在空白处右键,点击 Run As -> JUnit Test 运行单元测试进行初始化数据库脚本。

启动Tomcat服务

1、当前是Spring Boot工程,内部已经集成Web容器,你无需另外再下载Tomcat进行部署,只需按照以下方式进行即可。

2、打开/src/main/resources/config/application.yml文件,配置你的服务端口port、部署路径context-path,例如:

server:

  port: 8080
  context-path: /jeesite
  tomcat:
    uri-encoding: UTF-8

3、在Eclipse里找到com.jeesite.modules.config.Application.java文件并打开,然后在空白处右键,点击 Debug As -> Java Application 即可启动服务。

4、注意使用 Debug 运行,有助于你调试程序和提升开发效率,如:修改方法内的代码,修改视图代码,修改mapper代码,是不需要重启Web服务的。如果改变java类的结构,如果增删属性、方法、参数等,新增文件,这是就需要重启服务了。

浏览器访问

1、地址:http://127.0.0.1:8980/jeesite

2、默认最高管理员账号:system 密码:admin

5、这时已经配置完成,开启你的开发之旅吧

清理Demo数据

为了演示方法,初始化数据库后会载入一些演示数据,执行以下脚本即可清理

DELETE FROM js_sys_company;
DELETE FROM js_sys_office;
DELETE FROM js_sys_post;
DELETE FROM js_sys_employee;
DELETE FROM js_sys_employee_post;
DELETE FROM js_sys_role WHERE role_code NOT IN ('corpAdmin','default');
DELETE FROM js_sys_role_data_scope;
DELETE FROM js_sys_user WHERE user_code NOT IN ('system','admin');
DELETE FROM js_sys_user_data_scope;
DELETE FROM js_sys_user_role;
DELETE FROM js_sys_log;

常见问题

  • 管理员账号system与admin的区别:system为开发者使用的最高级别管理员,主要用于开发和调试,有些修改会直接影响系统的正常运行;admin为客户方使用的系统管理员,用于一些基础数据配置,如机构、用户、权限、用户字典等。

  • 下载不到jeesite-xxx.jar依赖包:相关包已经发布到Sonatype Repository仓库,在web项目的pom.xml里已配置,由于相关core项目的pom.xml里没有配置仓库地址,所以你需要根据【快速体验->本地运行】操作一遍,预先下载下jar包即可。

  • IntelliJ IDEA中提示NoClassDefFoundError: javax/servlet/ServletOutputStream错误,你只需要修改web项目下的pom.xml,注释掉spring-boot-starter-tomcat的<scope>provided</scope>部分改为<scope>compile</scope>即可。

  • 出现NoSuchMethodError错误,一般是依赖包版本需要更新,请尝试如下操作:在web项目上右键,选择菜单 -> Maven -> Update Project...(或按Alt+F5) -> 点击 Select All 按钮 -> 选择 Force Update of Snapshots/Releases 复选框 -> 点击OK按钮即可。

今后如何升级?

尽量不修改web项目以外的源码项目,如jeesite-common、jeesite-modele-core,如果修改了,请尽量 Pull Requests 上来,否则代码编码将与官方不同步,将对你的日后升级带来困难。

JeeSite的小版本(4.0.x)升级是非常便捷的,你只需要进行Maven快照强制更新,即可将最新版的依赖jar更新到本地,下面介绍一下在Eclipse里如何操作:

在web项目上右键,选择菜单 -> Maven -> Update Project...(或按Alt+F5) -> 点击 Select All 按钮 -> 选择 Force Update of Snapshots/Releases 复选框 -> 点击OK按钮即可。

如果进行相对大的版本(4.x.x)升级这里我们会附加一个声明,帮助你进行迁移操作。

展开阅读全文
打赏
16
30 收藏
分享
加载中
com.jeesite:jeesite-framework:4.1.7-SNAPSHOT 这个下载不下来
import com.jeesite.common.idgen.IdGen;
import com.jeesite.modules.sys.utils.UserUtils;
import com.jeesite.common.web.BaseController;
这个common里面的怎么少了很多很多的类 导致继承不到 很多类都没有 比如CrudDao,等 为什么啊
2019/11/08 10:30
回复
举报
导入eclipse时,maven提示: Missing artifact com.jeesite:jeesite-framework🏺4.1.4-SNAPSHOT
2019/04/23 15:14
回复
举报
ThinkGem博主
初始数据没有导入,根据错误找问题
2018/09/26 08:19
回复
举报
我执行初始化后在最后报InitGenData执行错误,但是还是可以运行源码,并打开网页,就是system账号无法登录,这种情况怎么办
2018/09/25 15:08
回复
举报

引用来自“knightluk”的评论

为了防止误操作,请运行时增加 -Djeesite.initdata=true 参数,初始化数据失败

引用来自“五十度黑”的评论

打开idea,点击修改tomcat服务器,选择junit,在VM options文本框中加入 -Djeesite.initdata=true
eclipse怎么加呢
2018/09/07 11:18
回复
举报
没有比这个完美的了
2018/08/22 15:17
回复
举报

引用来自“knightluk”的评论

为了防止误操作,请运行时增加 -Djeesite.initdata=true 参数,初始化数据失败
打开idea,点击修改tomcat服务器,选择junit,在VM options文本框中加入 -Djeesite.initdata=true
2018/08/13 11:17
回复
举报

引用来自“knightluk”的评论

为了防止误操作,请运行时增加 -Djeesite.initdata=true 参数,初始化数据失败
在内置的tomcat服务器,选择junit测试,在vm options 文本框中加入-Djeesite.initdata=true
2018/08/13 11:14
回复
举报

引用来自“五十度黑”的评论

java.lang.RuntimeException: 为了防止误操作,请运行时增加 -Djeesite.initdata=true 参数。

  at com.jeesite.common.tests.BaseInitDataTests.begin(pf:72)
  at com.jeesite.modules.sys.db.InitCoreData.begin(InitCoreData.java:64)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
  at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
  at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
  at org.junit.internal.runners
这是几个意思?
2018/08/12 22:48
回复
举报
java.lang.RuntimeException: 为了防止误操作,请运行时增加 -Djeesite.initdata=true 参数。

  at com.jeesite.common.tests.BaseInitDataTests.begin(pf:72)
  at com.jeesite.modules.sys.db.InitCoreData.begin(InitCoreData.java:64)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
  at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
  at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
  at org.junit.internal.runners
2018/08/12 22:47
回复
举报
更多评论
打赏
63 评论
30 收藏
16
分享
返回顶部
顶部