草庐IT

JDK-Logging

全部标签

java - 如何将 JDK6 ToolProvider 和 JavaCompiler 与上下文类加载器一起使用?

我的用例是使用JDK6中提供的ToolProvider和JavaCompiler类从java程序编译生成的源文件。源文件包含对上下文类加载器(它在J2EE容器中运行)中的类的引用,但不在系统类加载器。我的理解是,默认情况下,ToolProvider将使用系统类加载器创建JavaCompiler实例。有没有办法指定JavaCompiler使用的类加载器?我试过这种方法,它是从IBMDeveloperWorks上的一些东西修改而来的:FileManagerImplfm=newFileManagerImpl(compiler.getStandardFileManager(null,null,

java - Log4j、commons-logging、JDK-Logging 和 SLF4J 如何相互关联?

它们是替代品、依赖项、API还是彼此的实现?它们为什么存在? 最佳答案 啊,Java中的日志记录框架。您的问题混合了2种不同类型的库:log4j和JDK日志记录是处理日志记录的库CommonsLogging和SLF4J是日志外观:您仍然需要一个真正的日志实现(比如log4j)如果您正在编写一个将在其他人的系统中使用的库,那么您应该使用日志外观,因为您不知道他们将使用哪个日志框架。在这种情况下使用SLF4J(CommonsLogging较旧并且有一些类加载器问题)。如果您控制整个应用程序并且可以决定使用哪个日志记录框架,您可以自由选择

random - 为什么 JDK 既有 Math.random() 又有 Random 类?

仅仅是因为“大型API综合症”还是生成在某些情况下更偏向的随机数?如果是……我认为控制偏见很重要。 最佳答案 他们是一样的,真​​的。只是一个方便的方法。检查javadochere.此外,您可以通过创建随机对象来重新播种,而Math.random()将使用静态Random实例。 关于random-为什么JDK既有Math.random()又有Random类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

java - JDK 8 的类型推断如何与泛型一起工作?

我的代码无法使用JDK7进行编译,但可以使用JDK8进行编译。抽象实际代码:interfaceA{...}classBimplementsA{...}publicvoidAAA(Listlist){...}AAA(Collections.singletonList(newB()));Collections.singletonList定义为publicstaticListsingletonList(To){returnnewSingletonList(o);}据我所知,基于泛型,T将被推断为B,因此Collections.singletonList(newB())将是无法分配给List的

java - 在 IntelliJ IDEA 中设置 JDK 10 : the selected directory is not a valid home for JDK

有人试过在MacOS的IntelliJ上设置JDK10吗?尝试这样做时,我收到的消息是“所选目录不是JDK的有效主目录”。我已经安装了oracle为MacOS提供的JDK10我机器上的JDK安装路径是/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home 最佳答案 正确支持Java10需要IntelliJIDEA2018.x版本。IntelliJIDEA2017.x版本可能无法正确检测Java安装路径。 关于java-

java - 我得到 "NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil"

我的build.gradle文件中有以下依赖项。compile'org.slf4j:slf4j-api:1.7.25'compilegroup:'org.apache.logging.log4j',name:'log4j-core',version:'2.11.1'compilegroup:'org.apache.logging.log4j',name:'log4j-api',version:'2.11.1'在运行我的单元测试时,会显示以下日志。excludepatterns:SLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foun

Java 并发 JDK 1.6 : Busy wait does better than signalling? Effective Java #51

JoshuaBloch的“EffectiveJava”,第51条不是关于依赖线程调度程序以及不要将线程不必要地保持在可运行状态。引用文本:ThemaintechniqueforkeepingthenumberofrunnablethreadsdownistohaveeachthreaddoasmallamountofworkandthenwaitforsomeconditionusingObject.waitorforsometimetoelapseusingThread.sleep.Threadsshouldnotbusy-wait,repeatedlycheckingadatast

Windows上安装jdk17后没有jre的解决方法

下载OpenJDK:https://www.oracle.com/java/technologies/downloads/#jdk17-windows这里可以选择版本,因为JDK17为LTS版本,就先安装这个版本了。安装JDK:直接用安装包安装,默认安装路径在:C:\ProgramFiles\Java\jdk-17.0.4.1。新版本的JDK安装后,是没有自动安装jre的,需要手动用命令安装。安装JRE先以管理员权限运行CMD,然后用cd命令进入JDK的安装路径:cdC:\ProgramFiles\Java\jdk-17.0.4.1注:如果不是管理员身份运行,会出现报错。接下来输入命令:bin

java - 如何在 Netbeans 7 中附加缺少的 Java JDK 源

当我尝试在NetBeans中导航到一些JDK源代码时,它只显示它是已编译的代码并且缺少源代码,我可以附加它。使用“附加..”按钮附加源后没有任何反应?我应该在哪里附上源代码? 最佳答案 Tools->JavaPlatforms->JSE{选择您的jdk}->source选项卡->Addjar/folder{从安装的JDK路径中选择src.zip。} 关于java-如何在Netbeans7中附加缺少的JavaJDK源,我们在StackOverflow上找到一个类似的问题:

java - 需要 JDK 1.6 的最新版本的 build-helper-maven-plugin 是什么?

BuildHelperMaven插件的最新版本(目前为1.10)需要Java1.7,这破坏了我的构建。Theplugindocumentationpage仅显示最新版本的Java版本要求。 最佳答案 查看BuildHelperMaven插件版本,here版本1.9.1指向父POMorg.codehaus.mojo.mojo-parent版本33,它仍然将其Java目标设置为1.5(通过属性mojo.java.target)。版本1.10指向父POMorg.codehaus.mojo.mojo-parent版本38,它将其Java目标