小编roe*_*erj的帖子

有没有办法改变JDialog的所有者?

我有一个非常具体的问题,我想知道是否有办法更改JDialog的所有者(可以使用构造函数设置).我想没有"官方"的可能性(除了黑客),但我想确保我没有错过任何东西.关于这个主题的任何想法或提示都会有所帮助,谢谢......

java swing jdialog

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

如何在流中写"按下键"?

对不起这个奇怪的标题......

我有以下情况:我希望我的Java程序与外部控制台交互.为了将各个命令"发送"到该控制台,我需要模拟普通控制台上的"按下键".为了澄清我想要的东西,假设mysql没有其他API,我需要通过控制台进行交互.虽然这不是我的实际问题,但它足够接近.

我有以下代码:

        String command = "/usr/local/mysql/bin/mysql";
        Process child = Runtime.getRuntime().exec(command);

        StreamGobbler gobbler = new StreamGobbler(child.getInputStream());
        gobbler.start();

        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(child.getOutputStream()));
        out.write("help");
        // here enter key needs to be pressed
        out.flush();
        // out.close();
Run Code Online (Sandbox Code Playgroud)

如果执行调用out.close(),一切都很好.但是,当然,这样我只能发送一个命令,这不是我想要的.但如果out.close()省略,则其他程序永远不会执行该命令.我的猜测是它仍然等待命令"完成",这在普通控制台上将按Enter键完成.out.write(System.getProperty("line.separator"));out.newLine();(这是相同的)不解决问题,同样没有out.write("\r\n");out.write((char) 26);(EOF).

当然,可能是,我完全错了(即错误的做法).然后我会欣赏指向正确方向的指针......

对此的任何帮助高度赞赏.

java interface process

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

如何测试ClassFileTransformer/javaagent?

ClassFileTransformer使用ASM为javaagent 实现了一个.因为它有一些bug,我想为它编写一个JUnit测试用例.我该怎么做呢?

使用伪代码我想的是:

// Have a test class as subject
public static class Subject {
  public void doSomething(){...}
}
// Manually load and transform the subject
...?
// Normally execute some now transformed methods of the subject
new Subject().doSomething();
// Check the result of the call (i.e. whether the correct attached methods were called)
Assert.assertTrue(MyClassFileTransformer.wasCalled());
Run Code Online (Sandbox Code Playgroud)

现在的问题是:如何手动加载和转换主题并使JVM/Classloader使用我的操作版本?或者我完全错过了什么?

java instrumentation javaagents

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

在hibernate中将散列函数委托给未初始化的委托会导致更改hashCode

我有hashCode()使用hibernate委托给未初始化对象的问题.

我的数据模型看起来如下(以下代码经过高度修剪以强调问题因此破坏,不要复制!):

class Compound {
  @FetchType.EAGER
  Set<Part> parts = new HashSet<Part>();

  String someUniqueName;

  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((getSomeUniqueName() == null) ? 0 : getSomeUniqueName().hashCode());
    return result;
  }
}

class Part {
  Compound compound;

  String someUniqueName;

  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((getCompound() == null) ? 0 : getCompound().hashCode());
    result = …
Run Code Online (Sandbox Code Playgroud)

java hibernate initialization hashcode

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

Maven2 junit超时注释不起作用

我们在maven2项目中进行了一系列测试,并使用cruisecontrol进行构建.但是,构建定期挂起,因为测试的注释具有超时

@Test(timeout = 5000)
Run Code Online (Sandbox Code Playgroud)

被忽略了.我尝试在本地运行maven,重现超时被忽略的事实.

有没有办法再次激活测试的超时?

我目前使用一种解决方法来设置cruisecontrol中的超时.然而,这仅仅意味着整个构建被取消,而不仅仅是应该失败的测试.

备注:在maven 1中似乎有一个属性可以激活junven超时,这在maven 2中是丢失的.

java junit maven-2

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

JVM 何时会在堆栈跟踪中省略行信息以及如何防止它发生?

我有一个非常令人困惑的情况:

我有一个使用行信息编译的类(使用验证javap -l)。此类通过 ASM 进行加载和检测。我验证了是否加载了正确的类(即不是来自其他地方的过时的类文件)。我还确保ClassReader.SKIP_DEBUG未设置 ASM 标志。现在,如果我打电话Thread.currentThread().getStackTrace(),我会收到StackTraceElement有关该类错过线路信息的信息。在 Eclipse 中调试时,行信息显示在堆栈跟踪中。我还确保 JVM 启动-Xint只是为了确保在 JIT 编译代码时信息不会被删除,作为优化。

最令人困惑的是:尽管所有类都以相同的方式加载和检测,但这仅适用于某些类,而不适用于所有类。这是主要原因,我认为这与 JVM 有关。

所以我的问题是:JVM 是否会忽略堆栈跟踪中的行信息,如果是的话,何时以及如何防止这种情况发生?

编辑:只是为了弄清楚:这是我面前的源文件的类文件,而不是第三方库的类文件。从上面应该可以清楚地看出,我努力确保信息位于字节码中。

编辑:现在我什至找到了一个示例,其中一个StackTraceElement具有行号信息,而另一个没有,并且它们关心同一类的不同方法!

java debugging jvm stack-trace

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

Java http下载破坏文件

我有一个问题,我似乎无法解决...我做一个文件的http下载,但服务器和客户端上的文件的CRC32不匹配.此外,文件有不同的大小,所以显然我一定做错了...当我通过Firefox下载,文件大小是好的...所以我想它是在客户端代码中的某个地方.

在使用Java下载文件时已经找到了Corrupt文件,但这对我没有帮助...

这是代码:

private void downloadJar(String fileName, long crc32Server) throws IOException {
  System.out.println("Downloading file '" + fileName + "' from server '" + mServer + "'.");
  HttpURLConnection sourceConnection = null;
  BufferedInputStream inputStream = null;
  BufferedWriter fileWriter = null;
  long crc32Client;
  try {
    URL sourceURL = new URL(fileName);
    try {
      sourceConnection = (HttpURLConnection)sourceURL.openConnection();
    }
    catch (MalformedURLException exc) {
      throw new RuntimeException("Configured URL caused a MalformedURLException: ", exc);
    }
    sourceConnection.setRequestProperty("Accept-Encoding", "zip, jar");
    sourceConnection.connect();
    inputStream = new BufferedInputStream(sourceConnection.getInputStream());
    fileWriter …
Run Code Online (Sandbox Code Playgroud)

java http download

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

类路径上的类文件的ClassNotFoundException

我有以下代码:

    // Test TODO remove
    try {
        System.out.println(System.getProperties().getProperty("java.class.path"));
        this.getClass().getClassLoader().loadClass("mypackage.MyClass");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

现在输出显示出该类位于类路径上,即:

/...some/path.../workspace/project/target/test-classes:/rest/of/the/classpath
java.lang.ClassNotFoundException: mypackage.MyClass
        ...here be stacktrace...
Run Code Online (Sandbox Code Playgroud)

我还确保类文件确实位于给定位置,即该文件存在:

/...some/path.../workspace/project/target/test-classes/mypackage/MyClass.class
Run Code Online (Sandbox Code Playgroud)

也许以下几点很重要:所示代码是在附加到jUnit测试的javaagent中执行的,我通过编程方式启动了该代码(通过Runtime.execute(...))-因此,很明显,除了背景...但仍然:如果类路径包含带有类的文件夹,那么为什么它不能被加载?

java classpath

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