标签: java-5

在Java 1.7上编译Java 1.5仍然有效吗?

我最近在我的一个项目中转向了Java 7.我声称它可以在Java 1.5上运行,因为我在Java 6或7中没有依赖它.但是在今天编译时我注意到了这一点:

bootstrap class path not set in conjunction with -source 1.5
Run Code Online (Sandbox Code Playgroud)

谷歌发现这个警告的信息很少.这是否意味着您无法从Java 1.7编译为Java 1.5?

java java-5 java-7

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

什么时候应该使用类的java 5方法?

查看一些代码,我遇到了以下代码

trTuDocPackTypdBd.update(TrTuDocPackTypeDto.class.cast(packDto));
Run Code Online (Sandbox Code Playgroud)

我想知道这种方式是否有任何优势

trTuDocPackTypdBd.update((TrTuDocPackTypeDto)packDto);
Run Code Online (Sandbox Code Playgroud)

我问开发人员负责,他说他使用它是因为它是新的(这对我来说似乎不是一个特别好的理由),但是当我想要使用这种方法时我很感兴趣.

java java-5

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

无法理解File object.delete()的工作原理

我试图使用java 5删除一个jar文件(因此Java 7中引入的Paths API不是一个选项).

我的代码:

String sep = File.separator;

File test = new File("."+ sep + "server" + sep + "lib" + sep + "testJar.jar");
if(test.delete())
{
    logger.log(Level.INFO,test.getName() + " deleted.");
}
else
{
    logger.log(Level.INFO,"Delete operation is failed for "+test.getName());
}
Run Code Online (Sandbox Code Playgroud)

当我的代码被执行时,jar文件被删除但是Delete operation is failed for testJar.jar被打印在logs.Cant中了解原因.感谢任何帮助.

更新: 我再次尝试相同的代码,这次它说testJar.jar deleted 现在我很困惑发生了什么

java jar java-5

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

Java快速检查网络连接

我的问题相当简单.如果网络连接丢失,我的程序需要立即通知.我正在使用Java 5,所以我无法使用NetworkInterface的非常方便的功能.

目前我有两种不同的检查网络连接的方法:(
try ..catches removed)

方法一:

URL url = new URL("http://www.google.com");
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
// trying to retrieve data from the source. If offline, this line will fail:
Object objData = urlConnect.getContent();
return true;
Run Code Online (Sandbox Code Playgroud)

方法2:

Socket socket = new Socket("www.google.com", 80);
netAccess = socket.isConnected();
socket.close();
return netAccess;
Run Code Online (Sandbox Code Playgroud)

但是,这两种方法都会阻塞,直到达到超时,然后才返回false.我需要一个立即返回的方法,但与Java 5兼容.

谢谢!

编辑:我忘了提到我的程序依赖于IP地址,而不是DNS名称.因此在解析主机时检查错误...

第二次编辑:

使用NetworkInterface找出最终解决方案:

Enumeration<NetworkInterface> eni = NetworkInterface.getNetworkInterfaces();
        while(eni.hasMoreElements()) {
            Enumeration<InetAddress> eia = eni.nextElement().getInetAddresses();
            while(eia.hasMoreElements()) {
                InetAddress ia = eia.nextElement();
                if (!ia.isAnyLocalAddress() && !ia.isLoopbackAddress() …
Run Code Online (Sandbox Code Playgroud)

java networking java-5

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

我们何时应该使用控制台类?

我正在读关于Console课程,在第一行,它是写的

Java 6的新手,当我们Java SE 6从命令行运行时,我们通常使用控制台类对象

那么,这意味着我们通过命令行隐式使用控制台类?

然后,我开始寻找有关Console类的更多细节,我在javaConsole链接中找到了来自控制台类的Input.所以,总结了一些观点

  1. 控制台类只能在IDE之外使用System.console().readLine();
  2. Consoleclass 从控制台读取密码或密码,并使用回显禁用readPassword()

虽然,我们有Scanner类和BufferedReader类来从控制台读取输入,并且是在早期添加的Java 5.那么,仅仅因为安全原因Console类被添加了Java 6?或者是否有其他优势可以使用本课程.

有人可以分享更多关于Console课程的细节吗

console bufferedreader java.util.scanner java-5 java-6

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

尝试通过内省从父类访问attibrute时出现非法访问异常

我目前正在玩Java 1.5中的内省和注释.有一个父抽象类AbstractClass.继承的类可以具有使用自定义@ChildAttribute批注进行批注的属性(类型为ChildClass).

我想编写一个通用方法,列出实例的所有@ChildAttribute属性.

到目前为止,这是我的代码.

父类:

public abstract class AbstractClass {

    /** List child attributes (via introspection) */
    public final Collection<ChildrenClass> getChildren() {

        // Init result
        ArrayList<ChildrenClass> result = new ArrayList<ChildrenClass>();

        // Loop on fields of current instance
        for (Field field : this.getClass().getDeclaredFields()) {

            // Is it annotated with @ChildAttribute ?
            if (field.getAnnotation(ChildAttribute.class) != null) {
                result.add((ChildClass) field.get(this));
            }

        } // End of loop on fields

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

具有一些子属性的测试实现

public class …
Run Code Online (Sandbox Code Playgroud)

java introspection java-5

9
推荐指数
2
解决办法
8954
查看次数

Java:包装Java 1.5和1.6代码的最简单方法

我想打包一段绝对必须在Java 1.5上运行的代码.如果VM是1.6 VM,则代码的一部分可以"增强"程序.

基本上这是这个方法:

 private long[] findDeadlockedThreads() {
    // JDK 1.5 only supports the findMonitorDeadlockedThreads()
    // method, so you need to comment out the following three lines
    if (mbean.isSynchronizerUsageSupported())
      return mbean.findDeadlockedThreads();
    else
      return mbean.findMonitorDeadlockedThreads();
  }
Run Code Online (Sandbox Code Playgroud)

什么是最简单的方法在1.5上进行编译,然后在1.6时进行1.6方法调用

在过去,我通过编译一个独特的1.6类来做类似的事情,我将使用我的应用程序打包并在1.6上使用ClassLoader实例化(因为1.6 JVM非常适合混合0x32和0x31类),但我认为这是一个有点矫枉过正(有点痛苦,因为在构建过程中你必须构建0x31和0x32 .class文件).

如果我想在1.5上编译上述方法,我该怎么办?也许使用反射然后如何(我根本不熟悉反射)

注意:如果你很好奇,上面的方法来自这篇文章:http://www.javaspecialists.eu/archive/Issue130.html

(但我不想像在文章中那样"评论三行",我希望它能在1.5和1.6上编译并运行)

java class java-5 java-6

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

我可以忽略BeanCreationException并注入null吗?

我们的情况是,我们的Spring连接了一些包含使用Java 6构建的ActiveMQ类的bean.我们的应用程序在客户的服务器上运行,因此我们无法保证它们安装了Java 6或更高版本.如果它们恰好具有Java 5,则应用程序无法启动,因为BeanCreationException具有依赖于ActiveMQ的类的s(根本原因是a UnsupportedClassVersionError).

所以我的问题是,有没有办法忽略a BeanCreationException仍然启动应用程序?我希望能够显示一条错误消息,说明他们需要安装Java 6或更高版本,但由于应用程序甚至无法启动,我从来没有机会这样做.

我的预感是没有办法做到这一点,因为Spring需要能够保证我的应用程序在初始化后正确构建,但我想我还是会问.关于如何实现我的最终目标的任何其他建议也将有所帮助和赞赏.

我们正在使用Spring 3.0.6

谢谢!

java spring dependency-injection java-5 java-6

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

如何创建未在故障跟踪中显示的自定义JUnit4断言

我想在我们的代码库中添加一些自定义断言,以正确隐藏故障跟踪.我知道如何编写一个可以静态导入的公共静态方法.我知道如何重用旧的断言或抛出新的断言AssertionError.

我无法弄清楚如何做的是将新的自定义断言保留在Failure Trace之外.我们已经习惯了故障跟踪中的第一个命中,而不是断言代码本身,而是调用断言的测试代码.

我知道有一个filtertrace控制过滤堆栈的属性,但我找不到任何关于将新断言添加到过滤器所需要做的好文档.

我想做的一个例子:

package testassertions;

import static newassertions.MyAssertions.myAssertTrue;

import org.junit.Test;

public class ExampleTest {
    @Test
    public void myAssertTruePassing() { myAssertTrue(true); }

    @Test
    public void myAssertTrueFailing() { myAssertTrue(false); }
}
Run Code Online (Sandbox Code Playgroud)
package newassertions;

import static org.junit.Assert.assertTrue;

public class MyAssertions {

    public static void myAssertTrue(boolean b) {
        assertTrue(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

myAssertTrueFailing()的失败跟踪显示:

java.lang.AssertionError
    at newassertions.MyAssertions.myAssertTrue(MyAssertions.java:8)
    at testassertions.ExampleTest.myAssertTrueFailing(ExampleTest.java:12)
Run Code Online (Sandbox Code Playgroud)

我需要它只显示:

java.lang.AssertionError
    at testassertions.ExampleTest.myAssertTrueFailing(ExampleTest.java:12)
Run Code Online (Sandbox Code Playgroud)

java junit4 assertion java-5

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

Java Swing中的弹出窗口

有人可以建议我如何在Java Swing中实现弹出窗口.我希望弹出窗口是一个模态窗口(弹出窗口打开时用户无法返回主窗口).

我尝试使用JDialog,但它只允许一个小部件用于用户输入,而我需要多个小部件.我可能在这里错了,但这是我能够做到的.

感谢您的帮助.

java swing java-5

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