小编Ipk*_*iss的帖子

如何解决由以下原因引起:java.lang.ClassNotFoundException:javax.xml.bind.JAXBException迁移到Java 11(Openjdk-11.0.1)

我已经安装了OpenJDK 11.0.1,当我尝试使用mvn install运行我的应用程序时,我收到以下错误,我已经通过将javax.xml.bind添加到我的pom.xml中添加了必要的依赖项作为修复,但它没有似乎工作,任何人都面临这个问题?我还需要做其他事吗?我的mvn --version返回此

Maven home: /usr/local/Cellar/maven/3.5.2/libexec
Java version: 11.0.1, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.2", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)

我添加这个,但没有解决问题

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

[INFO] --- maven-failsafe-plugin:2.20:integration-test (failsafe-integration-tests) @ name-sample-test ---
[WARNING] Error injecting: org.apache.maven.plugin.failsafe.IntegrationTestMojo
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3138)
    at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2358)
    at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:245)
    at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:99)
    at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:658)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:882)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214)
    at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1006)
    at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1038)
    at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1001) …
Run Code Online (Sandbox Code Playgroud)

java spring-boot java-11

8
推荐指数
2
解决办法
3389
查看次数

将一个 json 属性映射到 java 中的两个不同字段 (jackson)

这是我尝试过的,但我的名字字段为空

@Data
@NoArgsConstractor
@AllArgsConstructor
public class User{

      @JsonProperty("name")
      private String name;
      @JsonProperty("age")
      private int age;

      private String firstName;

      public void setFirstName(String name){
        this.firstName = this.name.substring(4,10);
      }
}
Run Code Online (Sandbox Code Playgroud)

假设我有 json 想要映射到上面的 POJO,问题是我想对 name 和 firstName 使用 @JsonProperty("name") ,但设置 firstName 略有不同。

java jackson

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

如何将自定义字段添加到日志logback-logstash

我的Spring Boot日志当前如下所示。

{"@timestamp":"2018-08-07T14:49:21.244+01:00","@version":"1","message":"Starting Application on ipkiss bla bla)","logger_name":"logger name....","thread_name":"main","level":"INFO","level_value":20000}
Run Code Online (Sandbox Code Playgroud)

使用如下的logback-spring.xml设置

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="com.ipkiss.correlate.logback.CorrelationPatternLayoutEncoder">
            <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} id = %id  %m%n%wEx</pattern>
        </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

和我的LayoutEncoder类看起来像这样

public class CorrelationPatternLayoutEncoder extends PatternLayoutEncoder {
    public CorrelationPatternLayoutEncoder() {

    }

@Override
public void start() {
    PatternLayout patternLayout = new PatternLayout();
    patternLayout.getDefaultConverterMap().put("id", CorrelationConverter.class.getName());
    patternLayout.setContext(context);
    patternLayout.setPattern(getPattern());
    patternLayout.setOutputPatternAsHeader(outputPatternAsHeader);
    patternLayout.start();
    this.layout = patternLayout;
    this.started = true;
}
Run Code Online (Sandbox Code Playgroud)

}

我想要达到的目的是将id添加到日志中,我无法使logstach附加我的id,我根据文档尝试了Custom(自定义)字段,但我无法使其正常工作,我有什么想法可以实现?

这就是我要结束的

{"id":"3a7ccd34-d66a-4fcc-a12e-763a395a496c","@timestamp":"2018-08-07T14:49:21.244+01:00","@version":"1","message":"Starting Application on ipkiss bla bla)","logger_name":"logger name....","thread_name":"main","level":"INFO","level_value":20000}
Run Code Online (Sandbox Code Playgroud)

或ID附加在日志末尾。

spring-boot logstash-logback-encoder

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

千分尺/普罗米修斯如何防止测量值变成NaN?

我正在尝试监视已登录的用户,我通过调用api获取已登录的用户信息,这是我使用的代码,

public class MonitorService {
    private InfoCollectionService infoService;
    public MonitorService(InfoCollectionService infoService) {
        this.infoService = infoService
    }

    @Scheduled(fixedDelay = 5000)
    public void currentLoggedInUserMonitor() {
        infoService.getLoggedInUser("channel").forEach(channel -> {
            Metrics.gauge("LoggedInUsers.Inchannel_" + channel.getchannelName(), channel.getgetLoggedInUser());
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Prometheus中看到了值,问题出在几秒钟后,该值变成NaN,我已经读到千分尺用WeakReference(因此收集了垃圾)包装了它们的obj输入,我不知道如何解决它。如果有人知道如何解决这个问题,那就太好了。

java spring-boot prometheus micrometer

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

当字段包含 @sign BigQuery Standard SQL 时,如何使用函数从 Google BigQuery 中提取 json

所以我的桌子看起来像这样

{"@timestamp":"2018-08-08T09:21:57.947+00:00","@version":"1","message":"bla bla"}
Run Code Online (Sandbox Code Playgroud)

例如,我可以使用如下的 json 函数提取消息部分

JSON_EXTRACT_SCALAR(log,'$.message') AS message
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以相同的方式提取时间戳时

JSON_EXTRACT_SCALAR(log,'$.@timestamp') AS timestamp
Run Code Online (Sandbox Code Playgroud)

我收到错误“错误:JSONPath 中不支持的运算符:@”有关正确语法的任何想法?

google-bigquery bigquery-standard-sql

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

如何更简洁地重写这个 Kotlin 过滤器方法?

我有一个字符串列表。我想搜索给定的查询字符串并说我只想要前 10 个匹配的字符串。这是我尝试过的,第一个完全符合我的要求。

我想知道是否有一种简洁的写作方式。

fun search(query: String): ArrayList<String> {
    val found = ArrayList<String>()
    for (i in terms.indices) {
        if (terms[i].contains(query)) {
            found.add(terms[i])
        }
        if (found.size == 10) {
            break
        }
    }
    return found
}
Run Code Online (Sandbox Code Playgroud)

我想使用这个,但正如你所看到的,它不像上面的那样有效,因为它贯穿了整个列表

fun search2(query: String): List<String> {
    return terms.filter { it.contains(query) }.take(10)
}
Run Code Online (Sandbox Code Playgroud)

kotlin

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

当元素是 BigQuery StandardSql 中的对象时,如何计算数组中元素的数量

我有以下 json

{
  "CustomerId": "B0001",
  "Items": [
    {
      "ItemId": "00001",
      "ItemName": "Banana"
    },
    {
      "ItemId": "00001",
      "ItemName": "Orange"
    },
    {
      "ItemId": "00001",
      "ItemName": "apple"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想计算在这种情况下的项目数,该列应该返回 3 我已经尝试过

select ARRAY_LENGTH(Items) as Number_of_items2 
Run Code Online (Sandbox Code Playgroud)

但这显然会在 bigquery 上引发错误

google-bigquery

0
推荐指数
1
解决办法
7332
查看次数