小编jos*_*pos的帖子

单独运行JUnit test*methods*

maven-surefire-plugin能够独立运行所有JUnit测试方法吗?即,是否能够为每个测试方法而不是每个测试类分叉JVM?

已弃用的选项

<forkMode>pertest</forkMode>
Run Code Online (Sandbox Code Playgroud)

和当前

<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
Run Code Online (Sandbox Code Playgroud)

似乎只为每个测试类分叉.

PS:测试方法应该是独立的,因此没有人需要在新的JVM上运行每一个(而不是说它会非常昂贵).但我想知道是否有这样的选择.

java junit maven maven-surefire-plugin

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

MultiKeyMap get方法

我想使用Apache Collection中的MultiKeyMap,因为我需要一个带有两个键和一个值的HashMap.要放置元素我这样做:

private MultiKeyMap multiKey = new MultiKeyMap();
multiKey.put("key1.1", "key2.1", "value1");
Run Code Online (Sandbox Code Playgroud)

对于get元素,我这样做:

String s = multiKey.get("key1.1");
Run Code Online (Sandbox Code Playgroud)

但是String的结果是空的 ......如果我传递了两个键,就像那样:

String s = multiKey.get("key1.1", "key2.1");
Run Code Online (Sandbox Code Playgroud)

String s的值为value1 ...

当我传递两个密钥中的一个时,如何扩展MultiKeyMap以获得正确的值?

java collections hashmap

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

从Java JNI捕获C stderr

我有一个用C开发的大程序,大多数函数有几 fprintf(stderr, "message")行.

但是现在我需要在Java程序中使用这些函数.所以,我实现了一个JNI接口,用于在Java和C之间进行通信.一切正常,Java和C可以进行通信,但现在我想在Java中捕获几个C的stderr ...我该怎么做?

干杯;)

c java java-native-interface stderr

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

使用 GPGME 在密钥服务器上搜索公钥

今天我在 gnupg 邮件列表上开始了一个新线程,使用 GPGME 在密钥服务器上搜索密钥。基本上我使用 GPGME 作为在我的应用程序中使用 GnuPG 的界面,但我不知道如何使用 GPGME 函数来搜索密钥服务器上的密钥。

任何的想法?

c gnupg gpgme

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

即使出现分段故障,我如何使用"gcov"?

我正在使用标志"-Wall -W -pedantic -O0 --coverage"(GCC版本4.8.2)编译C程序.但是,当该程序发生分段错误时,我无法提取覆盖范围,因为我没有.gcda文件...

有人知道即使发生分段故障我怎么能使用gcov

谢谢.

c segmentation-fault gcov

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

javap 是否缺少一些行号?

如果我编译以下源代码:

1.  public class Example {
2.    public boolean foo(boolean a, boolean b, char ch) {
3.      if (a && Character.isLetter(ch)
4.            || b && Character.isDigit(ch)
5.            || !a && !b) {
6.        return true;
7.      }
8.      return false;
9.    }
10. }
Run Code Online (Sandbox Code Playgroud)

使用 Java-7(OpenJDK 或 Oracle),我得到以下 LineNumberTable:

line 3: 0
line 6: 30
line 8: 32
Run Code Online (Sandbox Code Playgroud)

但是,使用 Java 8(OpenJDK 或 Oracle)编译相同的源代码,我得到另一个 LineNumberTable:

line 3: 0
line 4: 16
line 6: 30
line 8: 32
Run Code Online (Sandbox Code Playgroud)

为什么 Java 7 返回的 …

java bytecode javap

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

使用 Javassist 创建静态构造函数的克隆

似乎 Javassist 的 API 允许我们创建类中声明的类初始值设定项(即静态构造函数)的精确副本:

CtClass cc = ...;
CtConstructor staticConstructor = cc.getClassInitializer();
if (staticConstructor != null) {
  CtConstructor staticConstructorClone = new CtConstructor(staticConstructor, cc, null);
  staticConstructorClone.getMethodInfo().setName(__NEW_NAME__);
  staticConstructorClone.setModifiers(Modifier.PUBLIC | Modifier.STATIC);
  cc.addConstructor(staticConstructorClone);
}
Run Code Online (Sandbox Code Playgroud)

但是,该副本还包括(公共/私有)静态最终字段。例如,以下类的静态构造函数:

public class Example {
  public static final Example ex1 = new Example("__EX_1__");

  private String name;

  private Example(String name) {
    this.name = name;
  }
}
Run Code Online (Sandbox Code Playgroud)

实际上是:

static {
  Example.ex1 = "__NAME__";
}
Run Code Online (Sandbox Code Playgroud)

因此,静态构造函数的精确副本也将包括对最终字段“名称”的调用。

有没有办法创建不包括对 final 字段的调用的静态构造函数的副本?

- 谢谢

java javassist

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

如何知道一个类是否已经初始化?

使用 CustomClassloader 或 Java 代理 + Instrumentation API 都可以非常简单直接地获取 JVM 已加载的所有类。然而,已经初始化的类列表似乎并不那么容易获取。(其实我想知道有没有什么办法可以得到)

那么,有没有办法知道一个类是否已经初始化了呢?

- 提前致谢

java instrumentation jvm classloader

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