当前位置:   article > 正文

Bug清单

bug清单

Bug清单

持续更新,记录日常开发异常和学习

1.Linux

1.1 invalid option2: set: -

1.1.1保留现场
执行sh脚本报错
1.1.2探究原因
该sh脚本是在Window的notepad++下编写完成后,上传到Linux服务器上,导致格式不兼容,Window下的文件格式是dos,但是Linux需要的是Unix
1.1.3解决方法
在文件路径下输入,修改文件每行的后缀

# sed 's/要被取代的字串/新的字串' 
# -i 修改文件内容
sed -i "s/\r//" 文件名.sh
  • 1
  • 2
  • 3

参考链接

1.2 上下键无法查看history历史记录

1.2.1保留现场
上下键无法查看history历史记录
1.2.2探究原因
history命令被禁用了
1.2.3解决方法

# 查看历史记录数量 若为0 则被禁用
echo $HISTSIZE
# 修改/etc/profile
vi /etc/profile
# 添加 export HISTIZE=500
# 环境变量生效
source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

参考链接

1.3 jar包启动日志乱码

1.3.1保留现场
日志乱码

1.3.2探究原因
原因未知

1.3.3解决方法
加入启动参数-Dfile.encoding=utf-8

1.4 开机自动启动jar包

1.4.1保留现场
服务器重启

1.4.2探究原因

1.4.3解决方法

  1. 编写jar启动脚本(根据自己项目)
  2. 添加执行权限chmod +x carry.sh
  3. 移动mv carry.sh /etc/init.d/
  4. 注册系统服务chkconfig --add carry.sh
  5. 设置开机启动chkconfig carry.sh on
  6. 查看系统服务列表chkconfig --list

其他辅助命令

# 删除系统服务
chkconfig --del carry.sh
#启动服务
service carry.sh start
#停止服务
service carry.sh stop
#重启服务
service carry.sh restart
#服务状态
service carry.sh status
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考链接:

2.Mybatis

2.1 invalid comparison: cn.hutool.core.date.DateTime and java.lang.String

2.1.1保留现场
invalid comparison: cn.hutool.core.date.DateTime and java.lang.String
2.1.2探究原因
mybatis在3.30版本及以上判定时间时,不能将DateTime类型与字符串进行比较

<if test="beginTime != null and beginTime != ''">
    begin_time &gt;= #{beginTime}
</if>
<if test="endTime != null and endTime != ''">
    AND begin_time &lt;= #{endTime}
</if>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.1.3解决方法

<if test="beginTime != null">
    begin_time &gt;= #{beginTime}
</if>
<if test="endTime != null">
    AND begin_time &lt;= #{endTime}
</if>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考链接

3.Postgresql

3.1 cannot execute UPDATE in a read-only transaction

3.1.1保留现场
cannot execute UPDATE in a read-only transaction
3.1.2探究原因
后端分别部署在两台机器,同时启动,导致只读
3.1.3解决方法

# 查看事务是否为只读 若为no则是
show default_transaction_read_only;
# 会话级别 取消只读
set default_transaction_read_only = off;
# 数据库级别 取消只读
alter database carry set default_transaction_read_only = off;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考链接

3.2 指定值排序,空值排序在前

3.2.1保留现场

select * from test order by begin_time desc;
  • 1

3.2.2探究原因

3.2.3解决方法

select * from test order by begin_time desc nulls last;
  • 1

3.3 max(text)不是数字最大值

3.3.1保留现场
一个历史版本表,每新增一个版本就会加一,1.0.0 -> 2.0.0 -> 3.0.0 -> 4.0.0…,我处理版本逻辑:每次新增的时候,就先去数据库查询一下,当前最大版本是多少然后加一。
查询最大版本号:

select max(split_part(version, '.', '1')) from history where name = 'carry';
  • 1

3.3.2探究原因
因为version是varchar类型的,max比较的时候不是按照数字大小比较的,
已经超过了10个版本了,但是查询最大值的时候仍是9
在这里插入图片描述
3.3.3解决方法
将varchar转成numeric类型

select max(split_part(version, '.', '1')::numeric) from history where name = 'carry';
  • 1

4.Java

4.1Failed to bind properties under ‘spring.datasource.druid.stat-view-servlet.login-password’ to java.lang.String

4.1.1保留现场
启动失败
4.1.2探究原因

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: org.postgresql.Driver
    druid:
      statViewServlet:
        enabled: true
        # 设置白名单,不填则允许所有访问
        allow:
        url-pattern: /druid/*
        # 控制台管理用户名和密码
        login-username: test
        login-password: ENC(sNcYmY2fKFxF196qDJP2t3v7GQdNVQPwiv9+gmqzzfKFOW2/2pE2qOITNAIp9wVi)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

依赖版本:

<dependency>
	<groupId>com.github.ulisesbocchio</groupId>
	<artifactId>jasypt-spring-boot-starter</artifactId>
	<verison>3.0.5</verison>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

Jasypt 3.0以上默认使用PBEWITHHMACSHA512ANDAES_256解密,而我一开始采用的PBEWithMD5AndDES加密,加密与解密不一致导致的报错

4.1.3解决方法
参用PBEWITHHMACSHA512ANDAES_256加密

public static void main(String[] args) {
    PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
    SimpleStringPBEConfig config = new SimpleStringPBEConfig();
    config.setPassword("BLgrkWo8uJOhzs");
    config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
    config.setKeyObtentionIterations("1000");
    config.setPoolSize("1");
    config.setProviderName("SunJCE");
    config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
    config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
    config.setStringOutputType("base64");
    encryptor.setConfig(config);
    String result = encryptor.encrypt("123456");
    System.out.println("加密密文 = " + result);
    String decrypt = encryptor.decrypt(result);
    System.out.println("解密密文 = " + decrypt);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

参考链接:

补充:又一次发现这个问题,按照上述方法没解决,经排查,发现与jdk版本有关,我目前使用的是1.8.0_301,按照SunJCE中提供的PBEWITHHMACSHA512ANDAES_256加密和解密没有问题,但是在低版本中SunJCE可能未提供这个算法,然后给的另外一种默认算法,造成解密失败。解决方法:升级JDK版本,注意1.8.0_301中的301小版本也很关键

排查思路:

  1. 在jre1.8.0_301\lib\security\java.security文件中可以看到,提供者和默认加密算法
    提供者
    默认加密算法
  2. 查看获取的加密算法是否与你设置的一致
    在这里插入图片描述
    javax.crypto.SecretKeyFactory#getInstance(java.lang.String, java.lang.String)
    javax.crypto.Cipher#getInstance(java.lang.String, java.lang.String)

4.2改变list.steam.filter返回的list会影响原数组

4.2.1保留现场
UserDO.java

@Data
public class UserDO implements Serializable {
    /**
     * 用户编号
     */
    private Integer id;
    public UserDO() {
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Test.java

public class Test {
    public static void main(String[] args) {
        // 初始化list
        List<UserDO> list = new ArrayList<>();
        for (int i = 0; i < 8; i++) {
            UserDO user = new UserDO();
            user.setId(i);
            list.add(user);
        }
        // 过滤部分值
        List<UserDO> userDOList = list.stream()
                .filter(item -> item.getId() > 4).collect(Collectors.toList());
        // 输出原数组
        System.out.println("修改之前:" + list);
        // 改变
        userDOList.forEach(item -> item.setId(item.getId() * 2));
        // 输出原数组
        System.out.println("修改之后:" + list);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

运行结果

4.2.2探究原因
在使用stream流的时,返回的集合是新集合,无论你对返回的集合进行新增或删除对原有集合都没有影响到,但是如果你对返回的集合里面原本的对象进行修改值,那么原集合中的对象的值也会发生变化。DEBUG发现返回的集合里面的对象和原集合中的对象引用的地址值是一样的。类似于浅拷贝

4.2.3解决方法
采用深拷贝
UserDO.java

@Data
public class UserDO implements Serializable, Cloneable {
    /**
     * 用户编号
     */
    private Integer id;
    
    public UserDO() {
    }
    
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Test.Java

public class Test {
    public static void main(String[] args) throws CloneNotSupportedException {
        // 初始化list
        List<UserDO> list = new ArrayList<>();
        for (int i = 0; i < 8; i++) {
            UserDO user = new UserDO();
            user.setId(i);
            list.add(user);
        }
        // 过滤部分值
        List<UserDO> userDOList = list.stream()
                .filter(item -> item.getId() > 4).collect(Collectors.toList());
        // 输出原数组
        System.out.println("修改之前:" + list);
        // 改变
        for (UserDO userDO : userDOList) {
            UserDO clone = (UserDO) userDO.clone();
            clone.setId(clone.getId() * 2);
        }
        // 输出原数组
        System.out.println("修改之后:" + list);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

运行结果
注:除非不得已,不建议如此使用,会导致堆内存存有两份

参考链接:

4.3 java.lang.NoClassDefFoundError: javax/wsdl/OperationType | java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton | java.lang.NoClassDefFoundError:javax/xml/soap/SOAPException

4.3.1保留现场
java.lang.NoClassDefFoundError: javax/wsdl/OperationType | java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton

<!-- axis 1.4 jar start -->
<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis-jaxrpc</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
	<groupId>org.apache.axis</groupId>
	<artifactId>axis-saaj</artifactId>
	<version>1.4</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

4.3.2探究原因
缺少依赖
java.lang.NoClassDefFoundError: javax/wsdl/OperationType
补充:wsdl4j
java.lang.NoClassDefFoundError:org/apache/commons/discovery/tools/DiscoverSingleton
补充:commons-discovery
java.lang.NoClassDefFoundError:javax/xml/soap/SOAPException
补充:axis-saaj
4.3.3解决方法
pom.xml添加依赖

<!-- axis 1.4 jar start -->
<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis-jaxrpc</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>commons-discovery</groupId>
    <artifactId>commons-discovery</artifactId>
    <version>0.2</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>wsdl4j</groupId>
    <artifactId>wsdl4j</artifactId>
    <version>1.6.2</version>
</dependency>
<dependency>
	<groupId>org.apache.axis</groupId>
	<artifactId>axis-saaj</artifactId>
	<version>1.4</version>
</dependency>
<!-- axis 1.4 jar end -->
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

参考链接:

4.4 RestTemplate GET请求在Body中传递JSON数据

4.4.1保留现场
第三方接口调用
4.4.2探究原因

4.4.3解决方法

  1. 重写HttpComponentsClientHttpRequestFactory
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpUriRequest;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;

import java.net.URI;

/**
 * @author wanglei
 */
public class HttpComponentsClientRestfulHttpRequestFactory extends HttpComponentsClientHttpRequestFactory {
    /**
     * 创建请求
     * @param httpMethod the HTTP method
     * @param uri the URI
     * @return 请求
     */
    @Override
    protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URI uri) {
        if (httpMethod == HttpMethod.GET) {
            return new HttpGetRequestWithEntity(uri);
        }
        return super.createHttpUriRequest(httpMethod, uri);
    }

    /**
     * 定义HttpGetRequestWithEntity实现HttpEntityEnclosingRequestBase抽象类,以支持GET请求携带body数据
     */
    private static final class HttpGetRequestWithEntity extends HttpEntityEnclosingRequestBase {
        public HttpGetRequestWithEntity(final URI uri) {
            super.setURI(uri);
        }

        @Override
        public String getMethod() {
            return HttpMethod.GET.name();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

使用demo

public class RestTemplateTest {
    public static void main(String[] args) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> params = new HttpEntity<>("{\"name\":\"carry\"}", headers);
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setRequestFactory(new HttpComponentsClientRestfulHttpRequestFactory());
        ResponseEntity<String> demandIdResponse = restTemplate.exchange("www.baidu.com", HttpMethod.GET, params, String.class);
    }
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考链接:

4.5 控制台打印flowable执行的sql语句

4.5.1保留现场

4.5.2探究原因

4.5.3解决方法

logging:
  level:
    org.flowable.engine.impl.persistence.entity.*: debug
    org.flowable.task.service.impl.persistence.entity.*: debug
  • 1
  • 2
  • 3
  • 4

参考链接:

4.6 传入的XML参数不合规范

4.6.1保留现场
需求:传递待办信息使用XML的方式,其中有个标签是一个URL,用于跳转到待办页的,组装完成之后,对方收到解析失败。
4.6.2探究原因
URL:http://127.0.0.1:9090/bpm?id=15845c76-d887-4114-a8e4-943ccc324829&businessKey=SHNDE000001
这个URL存在 & 在XML属于特殊字符,需要转义,如果不转义,则会解析失败
4.6.3解决方法
修改XML的中URL (& ->&)
http://127.0.0.1:9090/bpm?id=15845c76-d887-4114-a8e4-943ccc324829 &businessKey=SHNDE000001

4.7Caused by: java.lang.NoSuchMethodError: ***.setName(Ljava/lang/String;)V

4.7.1保留现场
找不到set方法
4.7.2探究原因
在实体类中,使用了lombok中的Accessors(chain = true),生成的set方法返回类型不再是void,而是实体类本身,复制属性使用的是mapstruct,导致mapstruct找不到set方法,目前猜测mapstruct生成实现类过程中,默认找的返回类型为空的的set方法。

4.7.3解决方法
第一种:
删除Accessors(chain = true)注解
第二种:
增加lombok.config配置文件

config.stopBubbling = true
lombok.tostring.callsuper=CALL
lombok.equalsandhashcode.callsuper=CALL
# 如果设置为false,默认情况下生成的setter将返回void
lombok.accessors.chain=false
  • 1
  • 2
  • 3
  • 4
  • 5

4.8 org.postgresql.util.PSQLException: ERROR: function find_in_set(bigint, character varying) does not exist

4.8.1保留现场
org.postgresql.util.PSQLException: ERROR: function find_in_set(bigint, character varying) does not exist
4.8.2探究原因
之前项目使用的数据库是MySQL,后续项目迁移至PostgreSQL,PostgreSQL不存在find_in_set函数
4.8.3解决方法
原SQL:

select * from sys_dept where find_in_set(#{deptId}, ancestors)
  • 1

适配SQL:

select * from sys_dept where #{deptId}::text = ANY(string_to_array(ancestors, ','))
  • 1

4.9 java.lang.NoSuchMethodError: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream.builder()

4.9.1保留现场
根据漏洞报告升级相应的jar,因为commons-compress是间接引用,其对应的上级是poi-ooxml,直接将poi-ooxml从4.1.2升级到了5.2.4,导致的异常如下

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream.builder()Lorg/apache/commons/io/output/UnsynchronizedByteArrayOutputStream$Builder;
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1087)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.9.2探究原因
只升级了poi,而没有升级commons-io,升级后的poi使用了新的方法,而新的方法必须是升级commons-io才行

4.9.3解决方法
从2.11.0升级到2.12.0

<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.12.0</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

4.10 Caused by: org.flowable.common.engine.api.FlowableException: Error initialising eventregistry data model

4.10.1保留现场
项目要转移数据库,因为之前产生的数据量很大了,我就只导出数据定义DDL,并没有任何的数据DML,项目使用了flowable,于是就启动报错了
在这里插入图片描述

4.10.2探究原因
原因就是因为flowable启动回产生一些基础数据,但是我的空表没数据导致没数据,就启动失败
4.10.3解决方法
删除所有相关的表:act_* flw_*
在配置文件加入

flowable:
  database-schema-update: true
  • 1
  • 2

他会创建所有相关表和数据,就可以启动成功了

4.11 java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/exc/StreamConstraintsException

4.11.1保留现场
项目使用flowable启动流程实例,调用到了jackson
4.11.2探究原因
因项目漏洞扫描,需要升级jackson-databind到2.15.3,所以就只升级了jackson-databind,但是其他相关组件并没有升级
4.11.3解决方法
jackson-core 、jackson-annotations 等jackson相关内容升级至同一版本

5. Mysql

5.1 指定值排序,空值排序在前

5.1.1保留现场

select sm.creator from system_menu sm order by sm.creator
  • 1

5.1.2探究原因

5.1.3解决方法

select sm.creator from system_menu sm order by ISNULL(sm.creator), sm.creator desc;
  • 1

5.2 消失的数据

5.2.1保留现场

  1. 在代码中使用Mybatis insert怎么也插入不了,日志明明打印了insert语句,但是数据库中适中为空
  2. 然后我就把代码单独拿出来在dbeaver执行,显示插入成功,但是查询还是空
  3. 我就怀疑是不是数据库的问题,于是试了一下其他的表,发现可以成功插入并查询到,所以可以定位到是表的问题
  4. 然后我把表给删除了,并提前复制好DDL,然后重新创建,发现还是那样
  5. 我就怀疑是表的DDL问题

5.2.2探究原因

CREATE TABLE `user` (
  `id` bigint NOT NULL COMMENT 'ID',
  `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '名称',
  `create_id` bigint DEFAULT NULL COMMENT '创建人ID',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_id` bigint DEFAULT NULL COMMENT '更新人ID',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=BLACKHOLE DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='用户表';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

我忽然发现ENGINE=BLACKHOLE
BLACKHOLE 是MySQL数据库中的一种存储引擎,它不会将数据写入磁盘,而是直接丢弃所有写入操作。这种存储引擎适用于对数据完整性要求不高的场景,例如测试环境或者临时数据存储。
5.2.3解决方法
设置成常规引擎

ALTER TABLE `user` ENGINE=InnoDB;
  • 1

6. Nginx

6.1 设置图片等资源,强制下载

6.1.1保留现场

#sftp静态映射
location ~/sftp/(.*) {
	alias   /data/sftp/storage/$1;
}
  • 1
  • 2
  • 3
  • 4

6.1.2探究原因

6.1.3解决方法

#sftp静态映射
location ~/sftp/(.*) {
    add_header Content-Disposition 'attachment';
	alias   /data/sftp/storage/$1;
}
  • 1
  • 2
  • 3
  • 4
  • 5

6.2 413 Request Entity Too Large

6.2.1保留现场
413 Request Entity Too Large
6.2.2探究原因
nginx对上传文件的大小有限制,默认是1M,当超过大小的时候会报413(too large)错误
6.2.3解决方法
修改nginx目录下conf/nginx.conf,找到http{}段,修改或者添加

http {
    client_max_body_size 100M;
}
  • 1
  • 2
  • 3

参考链接:

7. Vue

7.1 Vue非开发环境开启vue-devtools

7.1.1保留现场

7.1.2探究原因

7.1.3解决方法

  1. 打开F12,选择源代码/Source,找到当前项目的基础库所在的js文件,一般名称以app开头,使用浏览器格式化工具查看,然后CTRL+F全局搜索config.productionTip
    在这里插入图片描述
  2. 在new那一行打断点,并F5刷新,拿到vue的配置对象
    在这里插入图片描述
  3. 在控制台改为true
    在这里插入图片描述
  4. 取消断点,关闭 F12/开发者调试面板,再次打开 F12 即可看到 vue 菜单已经出来了

参考链接:

7.2 Cannot find module ‘html-webpack-plugin’

7.2.1保留现场
npm run build:prod 打包失败
Error
Cannot find module ‘html-webpack-plugin’
7.2.2探究原因

7.2.3解决方法

  1. 删除 node_modules 目录
  2. 重新安装依赖:npm install --registry=https://registry.npm.taobao.org
  3. 安装缺少的依赖:npm i html-webpack-plugin --save-dev --legacy-peer-deps
  4. 重新打包 npm run build:prod

参考链接:

8. dbeaver

8.1 在无网络的情况下给Dbeaver安装数据库驱动

8.1.1保留现场

8.1.2探究原因

8.1.3解决方法

  1. 在有网络的电脑上,打开dbeaver,数据库->驱动管理器->编辑
    在这里插入图片描述
  2. 编辑打开之后,点击,若还没下载,先点一下下载/更新按钮,然后点击信息,打开信息窗口,看到文件信息,驱动就下载在你电脑的这个位置,然后可以把maven-central下的对应数据库驱动的文件夹,复制到U盘,传递到没网的机器上
    在这里插入图片描述
  3. 无网机器上,打开dbeaver,依次点击数据库->驱动管理器->编辑进入到相同界面,点击添加文件夹,将复制过来的驱动文件夹添加进去就可以了

参考链接:

9. TongWeb

9.1 Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getValueExtractors()Ljava/util/Set

9.1.1保留现场

Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getValueExtractors()Ljava/util/Set;
	at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.<init>(ValidatorFactoryImpl.java:144)
	at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:38)
	at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:383)
	at com.tongweb.tongejb.assembler.classic.ValidatorBuilder$OpenEjbConfig.buildValidatorFactory(ValidatorBuilder.java:399)
	at com.tongweb.tongejb.assembler.classic.ValidatorBuilder.buildFactory(ValidatorBuilder.java:109)
	at com.tongweb.tongejb.assembler.classic.ValidatorBuilder.buildFactory(ValidatorBuilder.java:65)
	at com.tongweb.tongejb.assembler.classic.LazyValidatorFactory.ensureDelegate(LazyValidatorFactory.java:53)
	at com.tongweb.tongejb.assembler.classic.LazyValidatorFactory.getFactory(LazyValidatorFactory.java:62)
	at com.tongweb.tongejb.assembler.classic.Assembler.createApplication(Assembler.java:938)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

9.1.2探究原因
由于Tongweb内部validation-api.jar与要部署的应用的依赖存在冲突导致
9.1.3解决方法
替换Tongweb内部validation-api.jar,替换的jar版本与部署应用中对应的validation-api.jar版本一致,替换路径在TongWeb/lib/validation-api.jar

参考链接

10. Git

10.1 Need to specify how to reconcile divergent branches.

10.1.1保留现场
git pull 报错

hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
hint:   git config pull.rebase false  # merge (the default strategy)
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint: 
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

10.1.2探究原因

10.1.3解决方法
git config pull.rebase false
默认将pull下来的代码与现有改动的代码进行合并

参考链接

1.1.1保留现场

1.1.2探究原因

1.1.3解决方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/394865
推荐阅读
相关标签
  

闽ICP备14008679号