小编ope*_*ngo的帖子

如何抑制初始 StatusLogger 错误消息

我在我的应用程序中使用 Apache POI 5.2.2。Apache POI 使用 log4j2 作为其用于调试的内部日志记录机制。因此 log4j-api-2.17.2.jar 是必需的依赖项。这里需要注意的是,我没有使用 maven,因此我下载了 POI 二进制发行版,并将所需的依赖项包含在应用程序类路径中。

POI 中的日志记录适用于 POI 开发人员,不建议用于正常操作(即最终用户)。对于我的用例,我根本不想使用日志记录。但是,当我的应用程序第一次加载其中一个 POI 类时,stderr 上会打印以下消息:

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
Run Code Online (Sandbox Code Playgroud)

我不想添加 log4j-core,因为我真的不想要日志记录。我真的只是想抑制此消息,因为日志记录与应用程序无关。我想以编程方式执行此操作,以避免为我不使用的内容添加配置文件。我尝试通过将log4j2.StatusLogger.level属性设置为来做到这一点OFF,但这没有任何区别(我也尝试将其设置为0)。

是否有一个简单的咒语可以用来抑制 StatusLogger 消息?或者我是否必须完全进入 log4j2 世界并编写一个空记录器?

apache-poi log4j2

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

git 很慢,有很多被忽略的文件

我已经建立了一个存储库来包含一个工作目录,该目录有数万个文件、数千个目录和许多 Gb 数据。此目录位于 samba 共享上。我只想在版本控制下在这个目录中有几十个源文件。

我已经这样设置了 gitignore 文件并且它可以工作:

# Ignore everything
*

# Except a couple of files in any directory
!*.pin
!*.bsh
!*/
Run Code Online (Sandbox Code Playgroud)

对存储库的操作(例如提交)需要几分钟才能执行。这太长了,无法合理地完成任何工作。我怀疑速度变慢是因为 git 正在遍历每个目录以查找可能已更新的文件。

在工作目录中只有几个位置我有要跟踪的文件,因此我尝试缩小要使用此查询检查的文件集的范围:

*
!/version_2/analysis/abcd.pin
!/version_2/analysis/*.bsh
!*/
Run Code Online (Sandbox Code Playgroud)

这也有效,但它仍然和不那么合格的 gitignore 一样慢。我猜是最后一行是杀手,但无论我如何尝试使 unignore 模式非常具体,我总是必须包含最后的通配符子句,以便进程找到要提交的任何文件。

所以我的两部分问题是

1) 是否有更好的方法来设置 gitignore 文件,通过仅包含包含相关结果的非常窄的一组目录和文件类型来帮助加快提交过程?

2) 是否需要对 git 或 samba 进行一些其他调整才能使这项工作更有效?

谢谢,

汤姆

git gitignore tortoisegit

5
推荐指数
2
解决办法
1229
查看次数

在Java9中在运行时为本机库添加新路径

我有一个包含一些本机代码的应用程序.为了方便用户安装和运行,我一直在运行时扩展私有字段ClassLoader.sys_paths,如上一个问题所述:在Java中为运行时的本机库添加新路径.有了这个hack,应用程序可以使用简单的unadorned java -jar app.jar命令运行,并且本机对象将正确定位在安装目录中.

这种技术在Java 9中不再起作用(请参阅如何解决InaccessibleObjectException("无法使{member}可访问:模块{A}在Java 9上没有'打开{package}'到{B}").本文描述了对Java 9的更改并建议了一个解决方案(在命令行中添加参数以打开模块),但这违背了我允许简单执行java命令的初衷.

有没有办法在运行时更改本机库搜索路径,或者这被认为是太多的负载枪留下来?

reflection java-native-interface java-9

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