小编Wes*_*Gun的帖子

如何忽略 Jacoco 的 lombok.@UtilityClass?

我曾经lombok.@UtilityClass

  • 生成私有构造函数
  • 使班级最终
  • 将实用程序类中的所有字段设为静态

并且 Jacoco 不涵盖 Lombok 生成的代码。如果我显式定义一个私有构造函数,Jacoco 可以识别它。

那么,有什么方法可以避免由于使用而导致的覆盖损失@UtilityClass呢?

lombok jacoco test-coverage

7
推荐指数
1
解决办法
2082
查看次数

IOException - detail message all question marks

I want to createNewFile with a path but I got an IOException. The question is, the detailed message cannot be interpreted, I can only see a bunch of question marks.

在此处输入图片说明

I am with Windows 10 originally in Spanish, but with Chinese language pack installed. The java language already set to en and file encoding UTF-8:

java -version
Picked up _JAVA_OPTIONS: -Duser.country=US -Duser.language=en -Dfile.encoding=UTF-8
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build …
Run Code Online (Sandbox Code Playgroud)

java ioexception java-11

7
推荐指数
1
解决办法
202
查看次数

Windows 10下的MSKLC:创建自定义键盘布局,支持中文的IME(输入法)和西班牙语的组合输入

此问题最初由我在Microsoft社区发布:

https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/msklc-under-windows-10-create-custom-keyboard/8c5a7137-d575-4247-8ab3-b4dd1e5fb437?tm=1495318604424

总结:我在Windows 10中使用Microsoft Keyboard Layout Creator 1.4创建了一个自定义键盘布局,但它只能部分工作.这不可以:

  • 将两个击键组合成一个以键入"组合字母",例如"¨"+"u"="ü".它不应该用中文存在,但我想实现这一目标.

  • 键入中文拼音和中文标点符号.在MS拼音IME中,我可以按shift切换中文拼音模式和英文模式.在拼音模式下,我可以将字母转换为拼音,从而获得汉字,但我的布局缺乏这个.而且,如果我在拼音模式下按"拼音"中的","它应该给我","(全长逗号),但这种布局无法做到这一点.

我正在考虑两种方法来解决这个问题:

  • 将Microsoft拼音的键盘布局替换为我的布局(用我的布局替换MS拼音的英文部分)

  • 将MS拼音的拼音部分复制到我的布局.

那么,我该如何解决这个问题呢?

keyboard-layout ime chinese-locale

6
推荐指数
1
解决办法
6597
查看次数

升级到 Java 11:不支持 -Djava.endorsed.dirs

我想将 Java 8 Spring Boot 项目升级到 Java 11。它使用 Gradle 4.9(包装器)。我正在使用 Intellij 2019.1 社区版。

下载 Java 11 后,当我运行时gradle test,我看到此错误:

-Djava.endorsed.dirs ..... 不受支持。模块化形式的认可标准和独立 API 将通过可升级模块的概念得到支持。

那么,我该如何解决这个问题?

java gradle java-11

6
推荐指数
1
解决办法
3365
查看次数

NSS/JSS:在Java中加载用户导入的证书以及PKCS#11智能卡

脚本

我正在开发一个Java Swing项目,我必须开发一个列出证书的功能,供用户选择通过SSL对服务器进行身份验证.

这些证书必须包含Firefox中用户导入的证书,如果插入了智能卡,也会列出卡中的智能卡.环境是Linux/MacOS.在Windows中,Internet Explorer处理所有这些,我们希望实现的与Windows中发生的情况非常相似:列出所有证书以及卡中的证书,供用户选择.


情况

在Ubuntu中使用Mozilla的NSS(网络安全服务)时,我发现我迷路了.由于没有在Java中使用JSS的代码示例,我只能部分地使用它,具体取决于我为提供程序加载配置文件的方式.

我现在做的是:

  1. 在firefox中读取证书(使用KeyStore,Provider并将KeyStore.Buildersoftokn.so作为库加载).

  2. 从卡中加载证书CryptoManager并获取其所有模块.(CryptoManager.initialize(profileDir),cm.getModules(),module.getTokens()等)


问题

方法1

如果我加载提供程序libsoftoken3.so,我可以看到用户证书.但是,当我CryptoManager在构建之后初始化时provider,外部模块(例如,我的智能卡)未列入cryptoManager.getModules().

config = "library=" + NSS_JSS_Utils.NSS_LIB_DIR + "/libsoftokn3.so\n"
            + "name=\"Soft Token\"\n"
            + "slot=2\n" //for softoken, can only be 2.
            + "attributes=compatibility\n"
            + "allowSingleThreadedModules=true\n"
            + "showInfo=true\n"
            + "nssArgs=\"configdir='" + NSS_JSS_Utils.getFireFoxProfilePath() + "' "
                + "certPrefix='' "
                + "keyPrefix='' "
                + "secmod='secmod.db' "
                + "flags='readOnly'\""
// …
Run Code Online (Sandbox Code Playgroud)

java nss client-certificates

5
推荐指数
1
解决办法
635
查看次数

设置了时区的SimpleDateFormat获取正确的值但是区域错误

我在Spring应用程序中进行了一个简单的测试,其默认时区设置为UTC:

@SpringBootApplication
public class MemberIntegrationApp {

    @Autowired
    private TimeZoneProperties timeZoneProperties;

    @PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone(timeZoneProperties.getAppDefault()));  // which is UTC
    }

    public static void main(String[] args) {
        SpringApplication.run(MemberIntegrationApp.class, args);
    }

}
Run Code Online (Sandbox Code Playgroud)

并且,这个简单的测试:( 测试类注释@SpringBootTest用于在主类中加载配置并且@SpringRunner也被应用)

/**
 * Test the effect of setting timezone
 */
@Test
public void testTimezoneSettingOnSimpleDateFormat() throws ParseException {
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String d = "2018-08-08 12:34:56";
    log.info("Trying to parse the date string: {}", d);
    Date result = f.parse(d);
    log.info("The result …
Run Code Online (Sandbox Code Playgroud)

java datetime java-8 spring-boot jackson-databind

5
推荐指数
1
解决办法
303
查看次数

Jackson - 将内部对象列表反序列化为更高级别的列表

使用 Spring Boot 和 Jackson,如何直接在外层将包装/内部列表反序列化为列表?

例如,我有:

{
    "transaction": {
    "items": {
        "item": [
            {
                "itemNumber": "193487654",
                "itemDescription": "Widget",
                "itemPrice": "599.00",
                "itemQuantity": "1",
                "itemBrandName": "ACME",
                "itemCategory": "Electronics",
                "itemTax": "12.95"
            },
            {
                "itemNumber": "193487654",
                "itemDescription": "Widget",
                "itemPrice": "599.00",
                "itemQuantity": "1",
                "itemBrandName": "ACME",
                "itemCategory": "Electronics",
                "itemTax": "12.95"
            }
        ]
    },
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在 JSON 下,item是一个列表items;但我想将它解析为一个名为 的列表items,直接位于 之下transaction,而不是定义一个Items包含名为item.

这可能吗?如何定义这个 DTO Item

public class TrasactionDTO {
    private List<Item> items;
    ...
} …
Run Code Online (Sandbox Code Playgroud)

java json jackson spring-boot

5
推荐指数
2
解决办法
6184
查看次数

取消信号(关闭连接)可能是什么原因?

在我们应用程序的 Kibana 中,我不断看到以下日志行org.springframework.web.reactive.function.client.ExchangeFunctions

[2f5e234b] Cancel signal (to close connection)
Run Code Online (Sandbox Code Playgroud)

线程是reactor-http-epoll-1这样的。

它可能在两种情况下发生:

  • 当连接成功并返回响应时,那么就没有关系了
  • 当由于某种未知原因,10 秒后,连接没有返回任何内容,并且此行也会发生,仅此而已。这似乎是一个超时,但我不确定(因为我的 WebClient 配置中的默认超时是 10 秒)

这可能是什么原因造成的?客户端主动掉线还是服务器主动拒绝?

第二种情况是超时吗?但TimeoutException()之后不会被抛出。

我现在doOnCancel()在 WebClient 中进行日志记录来处理第二种情况,但后来我注意到存在情况 1,并且这种doOnCancel()处理不再有意义,因为它似乎在所有情况下都会发生。

reactor-netty spring-webflux spring-webclient

5
推荐指数
1
解决办法
3455
查看次数

在cmd中进行jasypt:找不到主类

jasypt 1.9.2在Windows 7 x64中使用cmd。这里的encrypt.bat内容:

ECHO ON


set SCRIPT_NAME=encrypt.bat
set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI
set EXEC_CLASSPATH=.
if "%JASYPT_CLASSPATH%" == "" goto computeclasspath
set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH%

:computeclasspath
IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION
FOR %%c in (%~dp0lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c
IF "%OS%" == "Windows_NT" setlocal DISABLEDELAYEDEXPANSION

set JAVA_EXECUTABLE=java
if "%JAVA_HOME%" == "" goto execute
set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java"


:execute
%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %*
Run Code Online (Sandbox Code Playgroud)

我收到此错误(我也尝试过cd /d [the dir where encrypt.bat is located]并且错误仍然存​​在):

在此处输入图片说明

错误消息指出,在org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI哪里找不到主要类。我不明白 我试图更改JAVA_HOME系统变量中的值,但是没有运气。

command-line program-entry-point batch-file jasypt

4
推荐指数
1
解决办法
3888
查看次数

Feign.Builder“目标值必须是绝对的”错误:如何使用绝对url调用docker容器?

我有几个微服务与OpenFeign. 每个都是一个项目的子模块(称之为“父”),有自己的 docker 容器。

好的。因此,当我想使用feign.builder().target()方法构建客户端时,会发生错误,声称“目标值必须是绝对的”。我查看了源代码,它的意思是(feign.RequestTemplate.target(RequestTemplate.java:447)):

  public static boolean isAbsolute(String uri) {
    return uri != null && !uri.isEmpty() && uri.startsWith("http");
  }
Run Code Online (Sandbox Code Playgroud)

问题来了:其他服务的网址如下:

another-service:8080/check
Run Code Online (Sandbox Code Playgroud)

在本地测试中,这不是问题,因为配置文件localhttp://localhost:8080等等。但是在端到端测试中,这无法绕过绝对检查。

那么,现在该怎么办?

docker openfeign

4
推荐指数
1
解决办法
5455
查看次数