草庐IT

system-rules

全部标签

java - 重定向 System.out.println

我的应用程序有许多System.out.println()语句。我想从println捕获消息并将它们发送到标准记录器(Log4j、JUL等)。怎么做? 最佳答案 System类有一个setOut和setErr可用于将输出流更改为,例如,带有支持File的新PrintStream,或者在这种情况下,可能是另一个使用您的日志子系统的流选择。请记住,如果您将日志库配置为输出到标准输出或错误(可能是无限递归类型),您很可能会遇到麻烦。如果是这种情况,您可能只想将System.out.print类型的语句替换为真正的日志记录调用。

java - 防止 API 中的 System.exit()

我正在使用第三方库,如果遇到异常,它会执行System.exit()。我正在使用jar中的API。无论如何我可以阻止System.exit()调用,因为它会导致我的应用程序关闭?由于许多其他许可问题,删除System.exit()后,我无法反编译和重新编译jar。我曾经在stackoverflow中遇到过一个[我不记得的其他问题]的答案,我们可以使用Java中的SecurityManager来做这样的事情。 最佳答案 您可以安装一个禁用System.exit()的安全管理器:privatestaticclassExitTrapped

java - Google App Engine JSP 无法部署 : java. lang.RuntimeException : Cannot get the System Java Compiler. 请使用 JDK,而不是 JRE

希望这很简单,但是...除了部署到GAE之外,Eclipse在所有方面都工作得相对较好。我可以在本地运行我的GAE应用程序,但是当我尝试部署到google时,我收到以下消息:java.lang.RuntimeException:CannotgettheSystemJavaCompiler.PleaseuseaJDK,notaJRE.我已将构建路径设置为JDK。尝试从多个系统(win7和win8)部署同一个项目时也会发生这种情况,因此我怀疑问题与项目本身有关。这个特定的项目已经存在并且已经在谷歌上运行了多年。有趣的是,仅当我的应用中有.jsp文件要部署时才会出现此错误。如果我删除jsp文

java - 如果 Java 的垃圾收集器移动对象,Object.hashCode 和 System.identityHashCode 是什么?

我经常听说这些方法(Object.hashCode和System.identityHashCode)返回对象的地址,或者从地址快速计算出来的东西;但我也很确定垃圾收集器会移动和压缩对象。由于哈希码不能改变,这就带来了一个问题。我知道这不是日常工作需要知道的事情,但我想了解内部情况。那么,有谁知道这是如何在Java中实现的?或者.NET,因为它们可能很相似。 最佳答案 .NET的实现是故意不发布的(当您尝试反编译它时,您会发现它进行了非托管框架调用)。唯一的文档是here,它只声明它“不保证为每个对象产生不同的值”,并且“可能会在框架

java - 为什么我不能导入静态 java.lang.System.out.println?

当我可以导入静态java.lang.Math.abs时,我无法导入静态java.lang.System.out.println,这似乎很奇怪。这背后有什么原因,还是我在做一些我目前看不到的非常愚蠢的事情?(使用Eclipse。) 最佳答案 Math是一个类,abs是一个静态方法。System.out是一个静态字段而不是一个类。所以它的println方法实际上并不是静态方法,而是静态字段上的实例方法。 关于java-为什么我不能导入静态java.lang.System.out.printl

java - System.out.println() 和 System.err.println() 之间的区别

System.out.println()和System.err.println()在Java中有什么区别? 最佳答案 在Java中System.out.println()将打印到您正在使用的系统的标准输出。另一方面,System.err.println()将打印到标准错误。如果您使用的是简单的Java控制台应用程序,两个输出将是相同的(命令行或控制台),但您可以重新配置流,例如,System.out仍会打印到控制台,但System.err写入文件。此外,Eclipse等IDE默认以红色文本显示System.err,以黑色文本显示Sy

java - system.gc() 和 runtime.gc() 之间的区别

System.gc()和Runtime.gc()有什么区别? 最佳答案 两者都是一样的。System.gc()实际上等同于Runtime.gc()。System.gc()内部调用Runtime.gc()。唯一的区别是System.gc()是一个类方法,而Runtime.gc()是一个实例方法。所以,System.gc()更方便。 关于java-system.gc()和runtime.gc()之间的区别,我们在StackOverflow上找到一个类似的问题: h

java - System.out 到 java 中的文件

出于测试目的,我正在从另一个应用程序内部运行一个应用程序。我想将测试应用程序的输出重定向到一个文件,这样我就可以在每次测试后都有一个日志。有没有办法将应用程序的输出从java的命令行重定向到文件? 最佳答案 您可以使用Windows命令行支持的输出流重定向器,例如*nixshellsjava-jarmyjar.jar>output.txt或者,当您从vm内部运行应用程序时,您可以从java本身重定向System.out。你可以使用方法System.setOut(PrintStreamps)它替换了标准输出流,因此对System.ou

java - 不要在服务器端代码中使用 System.out.println

我听说使用System.out.println进行日志记录是一种非常糟糕的做法,这可能会导致服务器出现故障。我不使用这种方法,但我很想知道为什么System.out.println在后端代码中使用时会产生如此垃圾的东西。 最佳答案 System.out.println是一个IO操作,因此非常耗时。在代码中使用它的问题是,您的程序将等到println完成。对于小型网站,这可能不是问题,但一旦加载或多次迭代,您就会感到痛苦。更好的方法是使用日志框架。他们使用消息队列并且仅在没有其他输出时才写入。另一个好处是您可以为不同的目的配置单独的日

java - Java 的 System.arraycopy() 对小数组有效吗?

Java的System.arraycopy()对小型数组是否有效,或者它是一种native方法这一事实是否可能使其效率大大低于简单循环和函数调用?native方法是否会因跨越某种Java系统桥而产生额外的性能开销? 最佳答案 稍微扩展一下Sid所写的内容,System.arraycopy很可能只是JIT内在函数;这意味着当代码调用System.arraycopy时,它很可能会调用特定于JIT的实现(一旦JIT将System.arraycopy标记为“热”),即不通过JNI接口(interface)执行,因此不会产生原生方法的正常开销