解决nohup java -jar xxx.jar报出[1]+ Exit 1的错误:Unable to access jarfile xxx.jar和PersistenceException异常

导读:本篇文章讲解 解决nohup java -jar xxx.jar报出[1]+ Exit 1的错误:Unable to access jarfile xxx.jar和PersistenceException异常,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1. 复现问题

今天把manager.jar部署到测试环境的project目录下,使用如下指令启动项目:

[root@manager ~] nohup java -jar manager.jar > log.file 2>&1 &
[1] 78216

78126manager服务的进程id,说明manager.jar已创建进程。

上述指令的含义是:

  1. nohup java -jar manager.jar 启动manager.jar项目,不挂断运行命令

  2. Log.log 2>&1 表示将stdoutstderr合并后重定向到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]选项

  1. -q:仅输出VM标识符,不包括classname,jar name,arguments in main method

  2. -m:输出main method的参数

  3. -l:输出完全的包名,应用主类名,jar的完全路径名

  4. -v:输出jvm参数

  5. -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件

  6. -Joption:传递参数到vm,例如:-J-Xms512m

[hostid]选项

  1. [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:不区分大小写

mysqllinux下大小写规则如下:

  1. 数据库名与表名是严格区分大小写的;

  2. 表的别名是严格区分大小写的;

  3. 列名与列的别名在所有的情况下均是忽略大小写的;

  4. 变量名也是严格区分大小写的;

mysqlwindows下都不区分大小写。

3. 问题总结

以上解决方案可能无法解决你的问题。

但是遇到[1]+ Exit 1问题,可以在xxx.jar的同级目录找到对应的日志文件,打开日志文件查看错误内容。

根据错误内容再寻求其他解决方案。

如果想要了解更多关于nohup>>>tail cdlinux常用命令,可以参考文档:https://blog.csdn.net/lvoelife/article/details/126536958

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99154.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!