小编Kee*_*ist的帖子

从grep中排除.svn目录

当我grep我的Subversion工作副本目录时,结果包括.svn目录中的许多文件.是否可以递归grep目录,但排除.svn目录中的所有结果?

linux svn bash grep

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

带有条纹背景的JTable

对奇数行和偶数行使用不同的背景颜色是提高大表可读性的常用技巧.

我想在Swing的JTable中使用这个效果.我开始创建一个自定义表格渲染器,但这只能用于绘制实际单元格,我还想在表格的"白色"部分添加条纹,其中可能没有单元格.我可以子类化JTable并覆盖paintComponent(),但我更喜欢一个选项,我可以只更改表的渲染.

有没有更好的方法呢?

编辑:根据答案到目前为止,如果不延长JTable,这似乎是不可能的.但是,当我覆盖JTable.paintComponent()时,它只绘制有行的区域.我怎么画其余的?

java swing jtable

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

泽西岛:"找不到语法元素"是什么意思?

将Jersey从版本1.15升级到1.17后,它开始记录以下消息:

Apr 2, 2013 5:13:06 PM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Run Code Online (Sandbox Code Playgroud)

生成此类消息的服务示例:

@GET
@Path("/bla/{a}")
@Produces("application/json")
public String doStuff(@PathParam("a") String a) {
    return a;
}
Run Code Online (Sandbox Code Playgroud)

我的第一印象是将此视为错误消息,纯粹基于消息的措辞("无法找到").但是,它记录在INFO级别,并且它似乎在实践中没有任何影响,因为所有服务都继续工作.

所以我的问题是这些日志消息是否表明我们配置或使用Jersey的方式存在(潜在)问题.由于以前版本没有发生,我已经检查了发行说明,但没有发现任何相关内容.

java rest json jersey

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

Hibernate子查询

我在使用Hibernate创建子查询时遇到问题.不幸的是,Subqueries类几乎完全没有文档,所以我完全不知道如何将以下SQL转换为Hibernate Criteria:

SELECT id
FROM car_parts
WHERE car_id IN ( SELECT id FROM cars WHERE owner_id = 123 )
Run Code Online (Sandbox Code Playgroud)

我希望以下内容"正常工作":

session.createCriteria(CarParts.class).add(eq("car.owner", myCarOwner));
Run Code Online (Sandbox Code Playgroud)

但遗憾的是它没有.所以看来我实际上必须使用Subqueries类来创建Criteria.但我无法找到一个合理的例子,但是这导致我在这里问它.

java sql hibernate

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

在发送匿名使用信息之前,我应该请求许可吗?

我希望我们的应用程序在第一次启动时向服务器发送一些匿名信息(操作系统,Java版本等).这个用途的唯一用途是确定使用了多少副本,并了解客户最常使用的操作系统,因此我们知道应该在哪里集中测试.

我们是否应该询问用户的许可(通过显示允许/不允许对话框),还是不需要?我知道的许多应用程序在未经许可的情况下发送此类信息,但即使它可能是合法的,我也不知道它是否是好的行为.

usage-statistics

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

Java 5 SwingWorker替换

我们的Swing应用程序使用优秀的SwingWorker类在后台线程中执行一些长时间运行的任务.但是,许多较旧的Mac只支持Java 5,因此我们希望将应用程序编译为5而不是6.因为SwingWorker是在Java 6中引入的,所以我们不能再使用它了.

如果我只需要在后台执行某些操作,然后在完成后在GUI中进行通信,那么以下是否可以接受?还是我忘记了至关重要的事情?

public static void wannabeSwingWorker(final Runnable doInBackground, final Runnable callback) {
    Thread backgroundThread = new Thread(new Runnable() {
        public void run() {
            doInBackground.run();
            SwingUtilities.invokeLater(callback);
        }
    });
    backgroundThread.start();
}
Run Code Online (Sandbox Code Playgroud)

java swing swingworker

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

Android上DOM API的替代品?

我们有一个内部库,它使用org.w3c.dom DOM API来读写XML.尝试在Android上使用此库时,我发现它不再有效.看来Android只实现了DOM API的一个子集.我不知道原因,我知道它已在Android 2.2中修复,但我仍然需要针对较旧的设备.

我知道许多用于"常规"Java的替代DOM库,例如XOM和Dom4j.任何人都可以推荐一个符合以下目标的DOM库吗?

  • 它必须在Android上运行.
  • 它应该很小(因为人们按每MB支付).
  • 理想情况下,它应该类似于org.w3c.dom API,因为我需要重写现有代码.

这可能是不可能实现所有三个目标,但有两个我会很高兴.此外,出于好奇,有谁知道为什么不完全支持DOM API?我可以理解不实现Java Sound等的原因,但XML对我来说似乎非常重要.

java xml android dom

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

Mac App Store 提交失败,因为嵌入式 Java 11 框架包含现有 CFBundleIdentifier

我正在向 Mac App Store 提交应用程序。该应用程序基于 Java,因此 Java.runtime 框架嵌入在应用程序包中。

这在 Java 8 及更早版本中运行良好,但在 Java 11 中会导致一些问题。Apple 要求您使用自己的证书和权利文件对所有框架进行签名。因此,我使用带有 --force 选项的协同设计工具来替换现有签名,对所有二进制文件和 .dylib 文件以及框架本身进行签名。同样,这对于旧的 Java 版本来说是没问题的。

问题是,从 Java 11 开始,CFBundleIdentifier 包含在可执行文件中。此 CFBundleIdentifier 不会被 codesign 替换,因此仍然是“net.java.openjdk.cmd”。然后,Apple 会拒绝该应用程序,因为此 CFBundleIdentifier 已存在于 Mac App Store 中。

提供的错误消息显示了问题:

CFBundleIdentifier Collision - The Info.plist CFBundleIdentifier value 'net.java.openjdk.cmd' of 'java' is already in use by another application.
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是是否可以在使用协同设计或临时时替换现有可执行文件的 CFBundleIdentifier。解决方法是使用我自己的 OpenJDK 构建来设置不同的 CFBundleIdentifier,但这非常不切实际,并且会导致构建耗时。

java codesign mac-app-store java-11

5
推荐指数
0
解决办法
131
查看次数

docker run:如何避免 Docker 和外部主机在 172.18.xx IP 范围内重叠

我正在使用docker run本地测试我的容器。我发现它无法连接到我公司网络中的某个主机,失败并显示“没有到主机的路由”。原来这台主机的IP地址是172.18.xx,与Docker的网络重叠。

那么,有没有办法更改docker run配置,使其不声明此特定 IP 范围?我已经尝试更改Docker 守护程序配置文件中的bipdefault-address-pools选项,但这并没有解决问题。

docker

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