问题标签 [tools.jar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse - 如何配置 Eclipse 和 Maven 来检测 jdk.tools?
我在 Eclipse 中有一个 maven 项目,我在其中使用了一些 hadoop 库(hadoop-common、hadoop-auth、hadoop-hdfs),这些库引入了对 jdk.tools 的依赖。当我在另一台机器上检查这个项目时,它工作正常,但在我的 pom.xml 上抱怨“缺少工件 jdk.tools:jdk:tools:jar:1.6”。我可以通过手动添加依赖项并在我的本地驱动器上指定文件(例如“${JAVA_HOME}/../lib/tools.jar”)来解决此问题,但我想了解为什么它可以在一台计算机上运行而不是在另一个 - 我假设我的设置有问题?
我尝试了以下方法:
通过将“-vm C:\Program Files\Java\jdk1.6.0_25\bin\javaw.exe”添加到我的 eclipse.ini 文件中,确保 Eclipse 在 JDK 中运行。在 Eclipse 首选项 Java -> Installed JREs 下列出的唯一 JRE 是相同的 JDK。尝试在 Eclipse 首选项 Maven -> Installations between "Embedded (3.0.4)"、"External (3.0.4)" 和 "External (2.2.1)" 中切换 maven 版本
也许我需要在我的 maven settings.xml 文件中添加/更改一些东西?
任何建议,将不胜感激!
仅供参考,我正在使用 Eclipse Java EE Juno SR1 和 M2E 1.2.0。
eclipse - Ant 在 Eclipse Indigo Service Release 2 中不工作
我的问题是我的简单构建脚本只会打印一条消息在 Eclipse Indigo Service Release 2 中不起作用。脚本如下 -
当我尝试执行此脚本时,它没有给我任何错误,但没有打印消息“Eclipse!”。它也没有终止脚本,它一直处于运行模式,我必须手动停止它。我的项目指向'JDK1.6.0_32'而不是JRE。像“tools.jar”这样的所有必要的罐子都在那里。请让我知道为什么会这样。
您好,谢谢大家的回复。是的,它在那里,完整的脚本是-
但仍然是同样的问题。它没有显示任何东西。可能问题出在配置中的其他地方。请告诉我。
java - 以编程方式编译 java 文件
我知道这已经被问了很多,但我仍然没有一个好的解决方案,我仍然不明白某些部分。所以我需要以编程方式编译 *.java 文件。
是我正在使用的,并且(如预期的那样)编译器是null
. 现在,我确实知道我必须使用 JDK 而不是 JRE 作为“运行时”,但这里有一些我不明白的地方:仅仅放入tools.jar
应用程序的类路径然后访问还不够吗?到 Java 编译器 API?如果这是真的,那么独立的 Java 应用程序和基于 Web 的应用程序之间是否存在(我认为存在)差异。实际上,我正在尝试从 PlayFramework webapp 调用 JavaCompiler,所以我想通了,也许这个解决方案(包括tools.jar
)仅适用于独立应用程序?
我还尝试创建一个自定义 ClassLoader 并使用反射调用上述方法,但我得到的只是null
对象compiler
:
上面代码的解释:
- 为了简单起见,我没有包括 try/catch。
- app.classloader() 是一个播放方法,它返回 App 的 ClassLoader
tools.jar
包含在 Play 项目的我的 lib 文件夹中(这意味着它位于项目的类路径中 - 根据 Play 文档)
我很确定在 Play 能够加载 Java Compiler 类之前我还需要做一些其他事情,我只是不知道我缺少什么。
我知道像 Eclipse JDT 编译器这样的选项Runtime.exec("javac myFile.java")
,但这不是我想要的。
System.setProperty("java.home", "PATH_TO_YOUR_JDK");
哦,然后类似的东西ToolProvider.getSystemJavaCompiler();
正在工作,但我发现这个解决方案太难看了。
此致
编辑:(提供更多信息并反映最后状态)这是 web-app-structure 的基本表示:
MyJar.jar 现在有一个META-INF/MANIFEST.MF
包含以下内容的文件:
在不启动 Play 应用程序的情况下,我正在尝试(在lib
文件夹中):java -jar MyJar.jar
- 我的简单main
方法尝试调用 Compiler ( ToolProvider.getSystemJavaCompiler();
) 并返回null
. 所以这让我相信,这个问题与 Play 无关——在正常运行我的 Jar 时,我什至无法获得编译器!
java - 为什么在 Linux 上使用 Java Attach API 会失败?(即使 Maven 构建完成)
我一直在使用 Java Attach API(tools.jar 的一部分)附加到正在运行的 java 进程,并从内部将其关闭。
它在 Windows 上完美运行。但是,当在 linux 上运行时尝试实际执行附加代码时,我得到一个java.lang.NoClassDefFoundError
带有以下堆栈跟踪的原因...
我正在使用 Maven,到目前为止我有这个部分,以便包含 tools.jar。
值得注意的是 ${java.home} 评估为 jre,但即使我将其更改为 jdk 的直接路径,问题也是一样的。
我好难过...
windows - Maven 找不到带有正确 JAVA_HOME 的 tools.jar
我在我的 Windows 机器上构建 Maven 项目时遇到了一些问题。我已经设置了我的 JAVA_HOME 环境变量并且 Maven 找到了它。
以下是一些执行的结果:
'哪个 mvn'
'mvn-版本'
注意:它确实在这里找到了正确的 JAVA_HOME 路径!
使用 Maven 构建:
如您所见,由于某种原因,它正在查找完全错误的目录。如果需要更多信息或者您知道如何解决此问题,请告诉我!谢谢!
ide - 类路径中不存在 Android Studio 'tools.jar' 文件
我下载了当前版本的 Android Studio(最新版本为 2013 年 7 月 4 日)我还下载了 JDK 版本 7u25。
但是,启动后显示错误: 请确保 JAVA_HOME 指向 JDK 而不是 JRE。
我不知道如何解决这个问题,这不会让我运行 IDE。我将不胜感激任何帮助。
java - tools.jar 位于哪里?
跑步CentOS 6
,Java 1.7.0_25 OpenJDK
安装后RPM
我看到它说
位于哪里tools.jar
?我检查了/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64
无处可寻。
java - 如何获取toos.jar的PAI指南和java源码
我不得不引用一些 tools.jar,它是 jdk lib 的一部分。我想获得它的帮助文档和java源代码。请告诉我如何获得它或在哪里下载。非常感谢你!
java - 将 tools.jar 与 Java 应用程序包一起分发是否安全?
虽然tools.jar
不是 JRE 中的组件,但它附带了所有主要的 JDK 实现,例如 Oracle JDK 和 OpenJDK。
不是 JRE 的标准组件意味着当我分发一个使用tools.jar
.
我的问题是:
- tools.jar 是否包含与平台相关的组件,这些组件会阻止它分布在不同的平台(Windows/Linux/OSX)上?
- 我们已经知道 Oracle JDK 不允许分发
tools.jar
,但是 OpenJDK 呢,我们可以从 OpenJDK 分发 tools.jar 以避免许可问题吗? - 如果 tools.jar 不能与 Java 应用程序一起分发,是否有一种独立于平台的方法来确定其位置,以便可以将其放入类路径中?
java - 找不到标志。符号:java类
我们javac
以注解的形式为编译器实现了一些超魔力Processor
。使用一些看似无辜的 java 源文件,我们会得到以下自相矛盾的错误消息:
@Trace 是我们正在尝试处理的注解的名称,但错误发生在其他一些类中,行号与正在处理的注解无关。注释处理器将 a 应用于TreeTranslator
注释类的 AST,从而重写 AST 本身。
如果我们直接调用ant
或调用javac
,错误就会消失,并且注释处理器在 Linux 下似乎可以正常工作。在 Windows 下,第二次编译没有帮助,我们再次得到错误。当然,如果我们ant clean
手动删除输出目录,即使在 Linux 上也会再次抛出错误。
JDK 1.7 和 1.6 都会出现以下错误消息(当然,注释处理器是使用相应的 tools.jar 编译的)。
看起来好像 javac 的类文件检查器认为那java
是类,但绝对不是。我们项目的类路径中根本没有这样的类名,而且我们无处依赖它。不幸的是,该类在检查失败后并没有被写入文件系统,因此我们可以检查 - 可能严重损坏的 - 类文件。
什么可能导致如此令人费解的编译器错误?有没有办法在编译后检查失败的类文件并解开这个谜团?
我们设法将问题缩小到以下几点:
有一个类,say Wtf
,它包含一个 switch 语句切换枚举(参见https://stackoverflow.com/a/4319152/560450)或其他一些匿名内部类。如果类,比如说AA
,,,BB
和继承自CC
并包含至少一个方法(似乎跳过检查空类),并且注释处理器生成的AST部分包含对其他东西的引用,那么,和,即除了字典顺序之外的所有后代都会产生错误。原因可能是与加载内部类和解析对DD
Wtf
javac
java.lang.Object
java.lang
BB
CC
DD
javac
java.lang
,或其他一些曲折的小方法调用,都一样。