小编Gre*_*tes的帖子

带有java.util.concurrent.locks.ReadWriteLock的@GuardedBy注释

注释受保护的字段的正确/首选方法是什么,ReadWriteLock以便像FindBugs这样的工具可以利用注释?应该ReadWriteLock简单地在@GuardedBy注释中写下名称.是否有理由在@GuardedBy注释中写入只读锁的名称,或只写写锁?不FindBugs的,或其他工具,甚至支持ReadWriteLock的@GuardedBy?

java concurrency annotations static-analysis findbugs

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

如何判断Java中文件删除失败的原因?

File file = new File(path);
if (!file.delete())
{
    throw new IOException(
        "Failed to delete the file because: " +
        getReasonForFileDeletionFailureInPlainEnglish(file));
}
Run Code Online (Sandbox Code Playgroud)

那里getReasonForFileDeletionFailureInPlainEnglish(file)已经有很好的实施吗?否则我只需要自己写.

java error-handling file-io jdk1.6 jdk6

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

如何关闭JSLint缩进警告?

我发现JSLint会产生很多关于表单的警告:

Expected 'foo' to have an indentation at X instead at Y.
Run Code Online (Sandbox Code Playgroud)

所述的JSLint选项文档描述了一种indent识别表示的空间缩进的每个级别的量的数值选项.这个选项允许我说每个级别的缩进使用2个空格.我只是在我的JavaScript文件的顶部写这样的东西:

/*jslint indent: 2 */
Run Code Online (Sandbox Code Playgroud)

太好了.现在JSLint知道每个缩进级别缩进多少,但JSLint似乎是硬编码来决定每行应该具有什么级别的缩进.

假设我想以不同于JSLint规定的方式缩进我的代码.我可以使用一些JSLint选项吗?如果没有,我至少可以关闭缩进警告吗?我试过了:

/*jslint indent: false */
Run Code Online (Sandbox Code Playgroud)

但这并没有导致缩进警告被忽略; 它导致了JSLint错误.

formatting static-analysis jslint

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

java.rmi.NoSuchObjectException:表中没有这样的对象

我正在编写一个非常简单的RMI服务器,我java.rmi.NoSuchObjectExceptions在单元测试中看到间歇性的.

我在同一个对象上有一串远程方法调用,而前几个调用完成后,后面的调用有时会失败.我没有做任何事情来取消注册服务器对象.

这些错误并不总是出现,如果我输入断点,它们往往不会出现.是那些Heisenbugs,当通过调试器的执行速度减慢来查看它们时,它们的竞争条件会消失吗?我的测试或服务器代码中没有多线程(尽管可能在RMI堆栈内部?).

我通过Eclipse的JUnit插件在Mac OS X 10.5(Java 1.5)上运行它,并且RMI服务器和客户端都在同一个JVM中.

什么可以导致这些例外?

java rmi exception

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

如何在Eclipse中的默认Java构造函数上设置断点?

在Eclipse中,我想在Java 默认构造函数上设置断点.我不能简单地双击任何代码行的左边,因为默认构造函数没有源代码 - 它们是由Java编译器隐式生成的.

我希望能够在不修改现有代码的情况下设置这样的断点.

java eclipse breakpoints

21
推荐指数
5
解决办法
5710
查看次数

Java风格:正确处理异常

从概念上讲,我一直在决定我的项目的异常处理结构.

假设你有一个例子:

public abstract class Data {
   public abstract String read();
}
Run Code Online (Sandbox Code Playgroud)

还有两个子类FileData,它从一些指定的文件读取你的数据,而StaticData,它只返回一些预定义的常量数据.

现在,在读取文件时,可能会在FileData中抛出IOException,但StaticData将永远不会抛出.大多数样式指南建议将Exception传播到调用堆栈,直到有足够的上下文可用于有效处理它.

但我真的不想在抽象的read()方法中添加throws子句.为什么?因为Data和使用它的复杂机器对文件一无所知,所以它只知道数据.此外,可能还有其他数据子类(以及更多这些子类)从不抛出异常并完美地传递数据.

另一方面,IOException是必要的,因为如果磁盘不可读(或某些此类),则必须抛出错误.所以我看到的唯一出路就是捕获IOException并在其位置抛出一些RuntimeException.

这是正确的哲学吗?

java exception

17
推荐指数
2
解决办法
8379
查看次数

使用Ant过滤文件?

我有一个文件目录,我想使用Apache Ant(Linux上的1.7.1版)进行"就地"字符串过滤.

例如,假设在目录中mydir我所拥有的文件foo,bar和baz.进一步假设正则表达式的所有出现都OLD([0-9])应该改变为NEW\1例如OLD2→ NEW2.(请注意,replaceAnt任务不起作用,因为它不支持正则表达式过滤.)

可以使用以下Bash命令创建此测试情况(ant将在当前目录中运行,即mydir父目录):

mkdir mydir
for FILE in foo bar baz ; do echo "A OLD1 B OLD2 C OLD3" > mydir/${FILE} ; done
Run Code Online (Sandbox Code Playgroud)

这是我第一次尝试使用Ant进行过滤:

<?xml version="1.0"?>
<project name="filter" default="filter">
    <target name="filter">
        <move todir="mydir">
            <fileset dir="mydir"/>
            <filterchain>
                <tokenfilter>
                    <replaceregex pattern="OLD([0-9])" replace="NEW\1" flags="g"/>
                </tokenfilter>
            </filterchain>
        </move>
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

运行第一个Ant脚本对文件没有影响mydir.默认情况下,该overwrite参数true包含moveAnt任务.我甚至摆弄了这个granularity设置,但这没有用.

这是我的第二次尝试,"有效",但由于临时文件创建而略显烦人.此版本通过将内容移动到带有 …

ant

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

如何配置GNU Emacs默认编写UNIX或DOS格式的文件?

.emacs.el多年来我在我的文件中有这些功能:

(defun dos2unix ()
  "Convert a DOS formatted text buffer to UNIX format"
  (interactive)
  (set-buffer-file-coding-system 'undecided-unix nil))

(defun unix2dos ()
  "Convert a UNIX formatted text buffer to DOS format"
  (interactive)
  (set-buffer-file-coding-system 'undecided-dos nil))
Run Code Online (Sandbox Code Playgroud)

这些函数允许我轻松地在格式之间切换,但我不知道如何配置Emacs默认情况下以一种特定格式写入,无论我使用哪个平台.就像现在一样,当我在Windows上运行时,Emacs以Windows格式保存; 当我在UNIX/Linux中运行时,Emacs以UNIX格式保存.

无论我运行的平台如何,我都想指示Emacs以UNIX格式编写.我该怎么做呢?

我是否应该添加一些调用这些函数之一的文本模式钩子?例如,如果我在Windows上,那么dos2unix在找到文本文件时调用?

emacs formatting text-files end-of-line

17
推荐指数
2
解决办法
7173
查看次数

设计模式的Java注释?

是否有维护模式注释的项目?

例如,当我编写构建器时,我想用它来标记它@Builder.

以这种方式进行注释会立即提供代码实现的清晰概念.此外,@Builder注释的Javadoc 可以引用构建器模式的解释.此外,@Builder通过使用注释@Builder,可以轻松地从构建器实现的Javadoc导航到Javadoc @Documented.

我正在减慢为我的代码中的模式和习语积累一小部分这样的注释,但是我想利用一个更完整的现有项目(如果存在的话).如果没有这样的项目,也许我可以通过将其分解为单独的模式/习语注释项目来分享我拥有的内容.

更新:我已经创建了Pattern Notes项目以回应此讨论.欢迎捐款!这是@Builder

java annotations design-patterns

16
推荐指数
3
解决办法
4141
查看次数

移动到Mac OS X上的另一个屏幕/桌面/显示器时,Java Swing应用程序窗口消失

每当我用鼠标从一台显示器拖动到另一台显示器时,我的Java Swing应用程序窗口就会消失.当我拖动它时它是可见的,但是当我释放鼠标按钮时它会立即消失.我宁愿窗户没有消失.为什么它会消失?

当我激活Mission Control时,Swing Window出现在桌面底部,我拖动它.取消激活任务控制会使其从屏幕底部滑落.

我运行的Java Swing应用程序无关紧要.对于那些想要代码的人来说,这是一个简单的Java Swing应用程序,它展示了我正在描述的行为,享受:

import java.awt.*;
import javax.swing.*;

class SimpleSwing {
    public static void main(final String... args) {
        SwingUtilities.invokeLater(new Runnable() {
                @Override public void run() {
                    JFrame frame = new JFrame();
                    JPanel contentPane = new JPanel();
                    contentPane.add(new JLabel("Hello World!"));
                    frame.setContentPane(contentPane);
                    frame.pack();
                    frame.setVisible(true);
                }
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

我的环境是Mac OS X Yosemite上的Oracle Java JDK(撰写本文时的最新版本)(撰写本文时最新):

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

OS X Yosemite Version 10.10.2 (14C1510) …
Run Code Online (Sandbox Code Playgroud)

java macos swing

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