问题标签 [javac]

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.

0 投票
2 回答
8936 浏览

java - Java:特定枚举和通用枚举参数

我想将任何枚举值传递给实用程序类中的方法并获取另一个相同枚举类型的枚举值。像这样的东西:

使用方法getEnumAttribute()

这段代码功能齐全,Eclipse 编译和运行它时不会出现警告或错误,它的工作原理就像一个魅力。

但是当我通过 Maven2 从命令行清理和编译项目时,它在调用的行中失败并出现错误getEnumAttribute

我在 Eclipse 和 Maven 中使用 Sun JDK 1.6:

问题:

  1. 为什么这段代码在 Eclipse 中是可编译的和功能性的,而在 Maven 中编译失败,据我所知使用相同的 javac 编译器?

  2. 将特定枚举传递给泛型Enum<?>参数有什么问题?

谢谢,

马丁·沙纳

0 投票
4 回答
19848 浏览

ant - 如何在 Ant 中使用 javac 排除源包?

我查看了一堆不同的示例,并尝试了几种变体,但似乎无法使其正常工作。似乎您不能用 javac 排除整个目录,而只能排除文件,我想这意味着您不能指定包?这是我所拥有的:

0 投票
5 回答
28645 浏览

eclipse - JDK/JRE/JVM/Java SDK | 它们都是什么意思?有时你可以用 JRE 开发,有时你需要 JDK?

说实话,我对所有这些术语(JDK/JRE/Java SDK)都很困惑。我不确定每个人做了什么。

当我第一次开始在 Eclipse 中做简单的 Java 示例时,我很确定我只有 JRE,我相信这是普通用户用来在他们的系统上运行 Java 程序/小程序的默认 Java 安装程序。

但是,现在在课堂上我们使用的是 Google Appengine,这需要我猜想与 Java SDK 相同的 JDK。在浪费了一些时间后发现安装 JDK 意味着我还必须将 java/bin 添加到环境变量中以使 javac -version 在命令提示符下工作,我发现只有 JDK 具有 javac ...

在没有安装 JDK 并因此没有 javac 的情况下,我的早期 Java 程序是如何工作的?真正的主要问题...... JRE 和 JDK 之间有什么区别,你什么时候使用它们?

谢谢 :)

0 投票
1 回答
2695 浏览

java - APT ANT 任务在 Eclipse 中失败,但在 shell 中工作

我有一个蚂蚁javac任务,它应该运行一些注释处理器。从批处理文件运行时它工作正常,但失败

运行 javac.exe 编译器时出错

从 Eclipse 开始时。正常的编译javac任务工作得很好。

我猜从 Eclipse 开始的 ant 使用了一些不同的编译器?
如何将其更改为普通编译器?或者让它以任何方式工作?

0 投票
1 回答
396 浏览

java - javac/java文件系统并发契约是什么?

我正在运行一个多线程构建,其中两个依赖的 com.sun.tools.javac.Main.compile() 调用在单独的线程上运行,它们之间有大约 10 毫秒的暂停。每隔一段时间(大约每 100 次构建),第二个 javac 都会抱怨第一个 javac 输出中的类格式错误。

这是在 linux 上,但它必须适用于所有操作系统。我在这里面临的限制是什么?

我正在开发一个并发构建系统,所以我调用 javacs 的原因是因为它们位于不同的模块中。有确保运行顺序的外部同步(但当我调用 compile() 方法时,我实际上并没有在同步块内),而且我确信它们被一个接一个地调用,大约 10平均暂停 -20 毫秒。就我所知,这两个对 compile() 的调用真的应该只共享文件系统吗?

编辑 2:调用第二个 compile() 调用的线程处于 wait() 状态,直到第一个调用完成,因此存在顺序同步。但是当我调用实际的编译调用时,我不在同步块内。编译是一种静态方法,我假设他们在这种情况下没有任何内部安全发布问题......(?)

编辑 3:同步对 compile() 的调用没有帮助。也不会只向 linux 调用 sync()。但是如果可能的话,我还没有研究过 Java 级别的刷新缓冲区。

0 投票
5 回答
6159 浏览

ant - ant错误无法将旧文件重命名为临时文件

我正在使用 ant 1.8.0 和 java 1.6.0.17,但遇到了一个奇怪的问题。

在我的 build.xml 中,我有一个简单的任务来编译代码

在“classpath”中有一个jar,调用它library.jar

在以后的任务中,我需要添加一些类library.jar,我喜欢这样

这将失败并出现错误 Unable to rename old file (library.jar) to temporary file

在 javac 调用之前和之后,我一直在调用 handle.exe,我可以确认运行 ant 的 java 进程在 javac 调用期间抓取了 library.jar 的文件句柄,并且它没有放弃它。这导致我后来尝试更新 jar 失败。

为什么即使在 javac 任务完成后,ant 仍会在打开的类路径中保留对 jar 的句柄?

0 投票
4 回答
790 浏览

java - 如何编译我的 Java 源文件?

我的源文件在这个文件夹中:c:\data\mycompany。我所有的源文件都包含以下内容作为第一行:package mycompany; 现在从 c:\data 文件夹中,我使用以下命令编译了所有内容:javac mycompany/*.java -extdirs c:\some\other\folder\with\libs。这编译得很好。现在,当我尝试使用以下命令(再次从 c:\data)执行它时: java mycompany/test 然后我收到此错误:

线程“main”中的异常
java.lang.NoClassDefFoundError:
mycompany/test 原因:
java.lang.ClassNotFoundException:
mycompany.test at java.net.URLClassLoader$1.run(Unknown Source)

我也尝试了以下命令,但它重现了相同的错误:

java mycompany/test -extdirs c:\some\other\folder\with\libs

这是编译/运行的正确方法吗?

这是我的源代码:

0 投票
3 回答
3136 浏览

java - 如何使用没有包信息的jar文件?

我有一个名为“MyTools”的罐子。jar 位于 c:\data 文件夹中。我在同一个文件夹中创建了一个名为“UseTools.java”的新文件。现在我想在我的 UseTools.java 中使用 MyTools.jar 中的一些类。我试过这个,但它似乎不起作用:

我试图用以下方法编译它:

并收到此错误消息:

我没有在任何类中设置包名。

我必须在我的 jar 类中设置一个包名吗?

0 投票
3 回答
35518 浏览

java - 构建 Java 包(javac 到所有文件)

如何将目录中的所有文件编译为 *.class 文件?

0 投票
2 回答
4187 浏览

java - 完全从 _within_ build.xml 指定 Eclipse 编译器

作为一个实验,我们想在 Java 6 的运行时版本而不是 JDK 上使用 Eclipse java 编译器(从 eclipse.org 下载的 ecj-3.5.jar)来构建我们的产品,据我所知,这是一个添加的问题这个 jar 到 ant 类路径,并将 build.compiler 属性设置为指向适配器。

通过包括

在我的 build.xml 并使用 JRE 调用 ant 时,我得到了无法找到适配器的预期错误,并且通过将 ecj-3.5.jar 添加到 Eclipse 面板中的类路径中,我可以按预期编译我的代码。我相信现代蚂蚁的命令行中的“-lib foo.jar”可以使用相同的功能。

现在,我想从 build.xml 中指定希望类路径上的 ecj-3.5.jar 满足与上述相同的要求。我们已经可以用 ant 任务做到这一点,所以我相信这是可能的。

所以问题是:如何添加到 javac 使用的类路径以仅从build.xml 中定位编译器?


看来即将推出的 ant4eclipse 1.0 包括 Eclipse 编译器(这是我想要使用的),所以通过升级到那个(从 0.5)应该可以解决我们遇到的问题。


2010-09-24:Ant4Eclipse 仍处于 M4 阶段,但没有说明何时发布。


2011-12-01:我们现在已经从 ant 迁移到 maven。build.xml 脚本遇到了复杂性,需要一种新的方法。任何需要选择做什么的人——除了琐碎的项目外,不要走 ant4eclipse 路径。


2012-11-30:一年过去了,maven 的体验还是不错的。思维方式有很多怪癖和变化,但大多数在上下文中是有意义的。Maven 可以轻松地指定单个项目的编译器级别。我们正在考虑使用 ecj 代替 javac(出于多种原因),但对于大多数用途来说,javac 效果很好。