小编Jim*_*ter的帖子

RESTEasy Mock vs. Exception Mapper vs. Context

RESTEasy模拟框架在没有异常映射器的情况下工作正常 - 接收请求并返回具有预期内容的实体.

注册异常映射器并强制异常后,当RESTEasy内部调用ResteasyProviderFactory.getContextData(type)时调用失败,返回null,导致出现意外错误消息:"无法找到类型的上下文数据:javax.servlet.http.HttpServletRequest" .

无法在网上任何地方找到RESTEasy模拟加上异常映射器的任何示例,也无法找到有关错误的任何有用信息.

客户类:

package com.foo;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "foo-type", propOrder = {
    "name"
})
@XmlRootElement(name = "foo")
public class Foo {

    protected String name;

    public String getName() {
        return name;
    }

    public void setName(String value) {
        this.name = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

对象工厂:

package com.foo;

import javax.xml.bind.annotation.XmlRegistry;

@XmlRegistry
public class ObjectFactory {

    public ObjectFactory() {
    }

    public Foo createFoo() {
        return new Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

验证异常:

package com.foo;

public …
Run Code Online (Sandbox Code Playgroud)

java exception mocking resteasy

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

如何将类文字编译为Java字节码?

public class A {
}

public class B {
    public static void b() {
        System.out.println(A.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何A.class在B.class的字节码中编译类文字?它是一个现场参考?我在Oracle/Sun的字节码文档中找不到这一点.

无论是什么原因,反编译器都可以轻松地重建它:

java -jar decompiler.jar B.class
Run Code Online (Sandbox Code Playgroud)

拿起JAVA_TOOL_OPTIONS:' - Dfile.encoding = UTF8'

  1. // //由Procyon v0.5.30反​​编译// //

    public class B
    {
        public static void b() {
            System.out.println(A.class); <<<
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

java bytecode

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

如何在构建步骤中配置 Gradle google-java-format 插件以运行 goJF?

我们根据自述文件将https://github.com/sherter/google-java-format-gradle-plugin连接到我们的项目中。

我们还连接了一个 pre-commit 钩子来在提交之前运行插件,这确保了更改列表中的所有代码在推送之前都已格式化,这避免了在我们运行verGJF任务时 Jenkins 中的错误。

但是我们必须记住在运行goJF之前在本地运行./gradlew build,否则构建会因格式错误而失败。

我们通过为 IntelliJ添加https://plugins.jetbrains.com/plugin/8527-google-java-formathttps://plugins.jetbrains.com/plugin/7642-save-actions插件来解决这个问题,启用google-java-format 插件,并配置 save-actions 插件以在保存时格式化。

但这是开发人员必须记住要经历的许多额外配置,而且这意味着他们无法在处理代码时按照他们想要的方式格式化代码,只能在构建或提交时重新格式化。

我们更喜欢全 Gradle 解决方案,以便goJF任务在build任务之前运行(并且在verGJF任务之前运行,该任务已经build通过 google-java-format Gradle 插件绑定到任务)。

我们无法弄清楚如何做到这一点。别人知道吗?

intellij-idea gradle google-java-format

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

错误:无法访问 jarfile build/libs/gs-spring-boot-0.1.0.jar?

我按照https://spring.io/guides/gs/spring-boot/#scratch中的说明进行操作,但是当它说运行时:

./gradlew build && java -jar build/libs/gs-spring-boot-0.1.0.jar

构建失败并出现上述错误。

失败之前有一条消息说:

此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容。请参阅https://docs.gradle.org/4.8.1/userguide/command_line_interface.html#sec:command_line_warnings

但网上的每个人都说这只是一个警告。

该构建似乎没有创建或下载 build/libs/gs-spring-boot-0.1.0.jar。

目前首次尝试使用 Gradle 时完全被阻止。

gradle

3
推荐指数
1
解决办法
2万
查看次数

Gradle Jacoco 报告覆盖率与验证百分比不匹配

我们配置了排除:

def coverageExcludes() {
    return [
        "com/ourcompany/*Config*",
        "com/ourcompany/ServiceApplication*",
        "com/ourcompany/Shutdown*",
        "com/ourcompany/ShutdownConnector*",
        "com/ourcompany/Tomcat*",
        "com/ourcompany/TomcatCustomConnectorCustomizer*",
        "com/ourcompany/endpoint/exception/**",
        "com/ourcompany/endpoint/util/ObjectMapperBuilder*",
        "com/ourcompany/framework/**",
        "com/ourcompany/helper/ApiHelper*",
        "com/ourcompany/helper/OffsetDateTimeDeserializer*",
        "com/ourcompany/persistence/entity/**",
        "com/ourcompany/persistence/exception/**",
        "com/ourcompany/service/exception/ServiceException*",
        "com/ourcompany/service/model/**",
        "com/ourcompany/v2/**",
        "com/ourcompany/v3/**"
    ]
}
Run Code Online (Sandbox Code Playgroud)

将它们用于jacocoTestReport

jacocoTestReport {
    reports {
        xml {
            enabled true
        }
        html {
            enabled true
        }
    }
    getExecutionData().setFrom(fileTree(buildDir).include("/jacoco/*.exec"));
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it,
                exclude: coverageExcludes()
            )
        }))
        for (Object c : classDirectories) {
            System.out.println(c);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并且排除工作:

在此输入图像描述

然后我们尝试在验证任务中使用相同的排除,并将覆盖率失败阈值设置为 0.87,因为这就是覆盖率报告中显示的内容:

jacocoTestCoverageVerification {
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it,
                exclude: coverageExcludes()
            )
        }))
        for …
Run Code Online (Sandbox Code Playgroud)

gradle jacoco

3
推荐指数
1
解决办法
1880
查看次数