文章目录
1. 复现问题
今天把manager.jar
部署到测试环境的project
目录下,使用如下指令启动项目:
[root@manager ~] nohup java -jar manager.jar > log.file 2>&1 &
[1] 78216
78126
是manager
服务的进程id
,说明manager.jar
已创建进程。
上述指令的含义是:
-
nohup java -jar manager.jar
启动manager.jar
项目,不挂断运行命令 -
Log.log 2>&1
表示将stdout
和stderr
合并后重定向到log.file
关于nohup
的更多使用,可以参考这篇文档:nohup java -jar xxx.jar
为了确认manager.jar
是否启动成功,我们可以使用指令jps
查看。
jps(Java Virtual Machine Process Status Tool)
查询Linux系统当前所有java
进程pid
的命令,并可通过opt
来查看这些进程的详细启动参数。
命令格式:jps [options ] [ hostid ]
[options]选项 :
-
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-
-m:输出main method的参数
-
-l:输出完全的包名,应用主类名,jar的完全路径名
-
-v:输出jvm参数
-
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-
-Joption:传递参数到vm,例如:-J-Xms512m
[hostid]选项:
- [protocol:][[//]hostname][:port][/servername]
使用指令jps
如下查看:
[root@manager ~] jps
109346 Bootstrap
78232 Jps
96267 PropertiesLauncher
54958 Bootstrap
[1]+ Exit 1 nohup java -jar manager.jar > log.file 2>&1
由[1]+ Exit 1
可知,manager.jar
启动失败。
我们可以看log.file
文件的错误信息,因为 > log.file 2>&1
会把错误信息写到该文件中。
log.file
文件与manager.jar
同目录。
2. 分析问题
2.1 Unable to access jarfile xxx.jar
2.1.2 分析Unable to access jarfile xxx.jar
使用如下指令查看log.file
文件:
[root@manager ~] tail -fn 50 log.file
nohup: ignoring input
Error: Unable to access jarfile manager.jar
报出的错误信息是:Unable to access jarfile manager.jar
,翻译成中文就是无法访问manager.jar文件
。
还记得我开始说的吗?我把manager.jar
部署到测试环境的project
目录下,但我在根路径(/root路径)下执行启动命令,因为由[root@manager ~] nohup java -jar manager.jar > log.file 2>&1 &
可知,所以,报出无法访问manager.jar
文件。
2.1.2 解决Unable to access jarfile xxx.jar
于是,执行如下命令进入到project
目录:
# 1. 进入project目录
[root@manager ~] cd ./project
# 2. 启动服务
[root@manager ~] nohup java -jar jqpAdmin.jar > log.file 2>&1 &
[1] 78383
# 3. 查看服务启动情况
[root@presto_sugon jqp] jps
78403 Jps
109346 Bootstrap
96267 PropertiesLauncher
54958 Bootstrap
[1]+ Exit 1 nohup java -jar jqpAdmin.jar > log.file 2>&1
依然没有启动成功,在project
目录下查看log.file
文件,看到如下报错信息:
[root@presto_sugon jqp] tail -fn 200 log.file
2022-08-25 09:20:17.313 INFO 78383 --- [ main] c.j.a.a.config.ActitytiDataSourceConfig : cpu numbers = 4
2022-08-25 09:20:19.009 ERROR 78383 --- [ main] o.a.e.impl.interceptor.CommandContext : Error while closing command context
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'jqp.ACT_GE_PROPERTY' doesn't exist
### The error may exist in org/activiti/db/mapping/entity/Property.xml
### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntity.selectProperty-Inline
### The error occurred while setting parameters
### SQL: select * from ACT_GE_PROPERTY where NAME_ = ?
### Cause: java.sql.SQLSyntaxErrorException: Table 'jqp.ACT_GE_PROPERTY' doesn't exist
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.3.0.jar!/:3.3.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:122) ~[mybatis-3.3.0.jar!/:3.3.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:113) ~[mybatis-3.3.0.jar!/:3.3.0]
2.2 exceptions.PersistenceException异常
2.2.1 分析 exceptions.PersistenceException异常
造成org.apache.ibatis.exceptions.PersistenceException1
异常的原因是执行如下命令时:
select * from ACT_GE_PROPERTY where NAME_ = ?
发现没有ACT_GE_PROPERTY
这张表,即Table 'jqp.ACT_GE_PROPERTY' doesn't exist
。
于是,回到数据库去查看这张表,如下图所示:
使用如下SQL
语句去查询:
mysql> select * from act_ge_property;
+----------------+------------------+------+
| NAME_ | VALUE_ | REV_ |
+----------------+------------------+------+
| next.dbid | 22501 | 10 |
| schema.history | create(5.22.0.0) | 1 |
| schema.version | 5.22.0.0 | 1 |
+----------------+------------------+------+
3 rows in set (0.00 sec)
但使用select * from ACT_GE_PROPERTY
就报出表不存在的错误,唯一的原因就是mysql
开启了大小写敏感。
2.2.2 解决exceptions.PersistenceException异常
既然mysql
开启了大小写敏感,那就修改mysql
的配置文件,禁用大小写敏感即可。
在/etc/my.cnf
中的[mysqld]
后添加添加lower_case_table_names=1
,重启mysql
服务,这时已设置成功:不区分表名的大小写。
lower_case_table_names
参数详解:0:区分大小写,1:不区分大小写
mysql
在linux
下大小写规则如下:
-
数据库名与表名是严格区分大小写的;
-
表的别名是严格区分大小写的;
-
列名与列的别名在所有的情况下均是忽略大小写的;
-
变量名也是严格区分大小写的;
mysql
在windows
下都不区分大小写。
3. 问题总结
以上解决方案可能无法解决你的问题。
但是遇到[1]+ Exit 1
问题,可以在xxx.jar
的同级目录找到对应的日志文件,打开日志文件查看错误内容。
根据错误内容再寻求其他解决方案。
如果想要了解更多关于nohup
、>
、>>
、tail
、cd
等linux
常用命令,可以参考文档:https://blog.csdn.net/lvoelife/article/details/126536958
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99154.html