javac相关内容

FILLER的原始元素有用吗?

我正在开发一个Java程序(Dagger),它使用Java批注处理API来生成代码。当我们的程序在Foo.java中遇到批注时,它会生成Foo$$InjectAdapter.java。我们使用Filer接口附加触发生成代码的原始Element。 文件管理器文档说这是为了帮助增量构建: “此信息可在增量环境中用于确定是否需要重新运行处理器或删除生成的文件。非增量环境可能会忽略原始元素信息 ..
发布时间:2022-09-21 12:51:51 Java开发

在Gradle中编译一个JDK 8项目+一个JDK 9模块-info.java

我正在开发一个面向JDK 8的Java库,我正在使用OpenJDK 11在Gradle 5中构建它。为了面向JDK 8,我是javac的--release选项。 但是,我也希望我的库与JPMS兼容。换句话说: 我想提供一个用--release 9(Stephen Colebourne's scale中的选项3)编译的module-info.class, 而其余所有内容都是用--relea ..
发布时间:2022-09-21 12:42:31 Java开发

搞不懂AJC与javac的工作方式

我有点搞不懂AspectJ编译器ajc的工作原理。据我所知,在谈到CTW时,AJC用于将方面编织到编译后的字节代码中--即.class文件。 但是,当我查看AspectJ的maven-plugin(aspectj-maven-plugin)时,发现它是在maven的generate-sources阶段运行的,在javac编译器之前。这将意味着编译器在方面编织之后运行。这是有意义的,因为您可以编织 ..
发布时间:2022-07-17 11:21:02 Java开发

Java是否优化了2的幂除以移位?

Java 编译器或 JIT 编译器是否将除法或乘法优化为 2 的恒定幂以进行位移? 例如,以下两个语句是否优化为相同? int 中位数 = start + (end - start)>>>1个;int 中位数 = 开始 + (结束 - 开始)/2; (基本上 这个问题但对于 Java) 解决方案 不,Java 编译器不这样做,因为它无法确定 (end - start) 的标志是什 ..
发布时间:2022-01-17 08:54:31 Java开发

在不同的jvm中运行ant任务

我们的 ant 构建是使用 Java 1.7.0 for JAVA_HOME 运行的.这样 javac 和所有其他 Java 依赖目标默认使用正确的 Java. 但是来自外部供应商的 1 个 ant 目标不支持(或者说存在错误)使用 Java 1.7.0.而且不像例如javac或者fork junit,这个target不支持参数切换jvm. 是否可以在不同的 jvm 中运行特定的 an ..
发布时间:2022-01-16 12:40:44 其他开发

优化期间会使用 Java 内联方法吗?

不知道JVM/javac是不是聪明到可以转 //这一行...字符串 a = foo();字符串 foo(){返回栏();}字符串条(){返回一些复杂的字符串计算;} 进入 字符串 a = bar(); 或者在发布情况下去掉对 foo() 的不必要调用(因为无法访问代码): 字符串 a = foo(bar());//条形相同...字符串 foo(字符串 b){if (debug) do-s ..
发布时间:2022-01-16 11:56:24 Java开发

javac如何自动编译一个类的依赖

给定以下目录结构: /顶部|--- 工作|--- 包装|--- A.java|--- B.java 假设A.java和B.java这两个文件分别包含以下代码: //文件名:A.java包包;类 A { B b;}//文件名:B.java包包;B类{...} 假设当前目录为/top/wrk 为什么命令 javac -cp .即使我们还没有编译 B.java,pkg/A.java 也能成 ..
发布时间:2022-01-13 17:27:45 Java开发

如何从 cmd 运行作为包一部分的 .class 文件?

当我将 .class 作为 package 的一部分并尝试从 cmd 运行它时,我不断收到错误. 这是使用 javac 然后使用 java: 之后的代码 类 HelloWorld {公共静态无效主要(字符串[]参数){System.out.println("Hello World!");}} 然后是不起作用的代码: 包com;类 HelloWorld {公共静态无效主要(字符串[]参 ..
发布时间:2022-01-13 16:41:33 Java开发

如何使用 javac 编译 java 包结构

我正在尝试编译(从命令行)一个导入我自己的另一个包的 java 包.我正在关注 tutorial online 但似乎在我尝试编译最终的 java 文件(CallPackage.java). 这是文件结构: + test_directory (包含 CallPackage.java)->导入包->子包(包含 HelloWorld.java) 这里是 CallPackage.java: ..
发布时间:2022-01-13 16:39:21 Java开发

在 Annotation Processor for java 中发现方法调用的类

我正在为我们的构建系统编写一些工具,以对属于包含某些注释的类的方法强制执行一些严格的调用约定. 我正在使用编译器树 API... 我想知道的是,在遍历“树"时,如何判断 MethodInvocation 的类/接口类型. 我将 TreePathScanner 子类化为: @Override公共对象访问方法调用(方法调用树节点,树树){} 我希望有一种方法可以告诉您尝试调用该方 ..
发布时间:2022-01-13 10:21:10 Java开发

javac.exe AST 编程访问示例

是否可以通过编程方式访问 javac.exe 中的抽象语法树(AST)?你能举个例子吗? 解决方案 是的,这是可能的,但仅限于 Java 6.Peter von der Ahé 谈到了 本次采访.JSR 199: JSR 199 编译器 API 由三部分组成:第一个基本上允许您通过 API 调用编译器.其次,API 允许您自定义编译器查找和写出文件的方式.我的意思是抽象意义上的文件, ..
发布时间:2021-11-26 17:41:09 Java开发

类文件名中的 $1 是什么?

C:\Program Files\Java\jdk1.6.0_05\CoreJava\v1\v1ch2\WelcomeApplet>dir驱动器 C 中的卷没有标签.卷序列号为 2041-64E7C:\Program Files\Java\jdk1.6.0_05\CoreJava\v1\v1ch2\WelcomeApplet 目录2009-07-02 23:54 .2009-07-02 23:54 ..
发布时间:2021-11-25 20:41:23 Java开发

Java 9 编译器中的 --release 标志是什么?

Java 9 的 javac 有一个新标志 --release: >javac --help...--发布为特定的 VM 版本编译.支持的目标:6、7、8、9 它与 -source 和 -target 标志有什么不同?难道只是-source X -target X的快捷方式? 解决方案 不完全是. JEP 247:为旧平台版本编译 定义了这个新的命令行选项,--relea ..
发布时间:2021-11-25 20:40:19 Java开发

在 javac 中使用内部 sun 类

有没有办法禁用 javac 1.6.0_22 的限制,阻止我使用像 sun.awt.event.* 这样的 JRE 内部类? 我不想寻找: 解释为什么被禁止. 建议使用不同的类 建议使用反射 建议使用 ecj/eclipse 我只是想知道这是否可能,如果可能,那么如何. 解决方案 我自己找到了答案. 当 javac 编译代码时,它默认不链接 rt.jar.相反 ..
发布时间:2021-11-25 20:34:18 Java开发

Java:如何编译代码的整个目录结构?

用例很简单.我得到了使用 Eclipse 创建的源文件.因此,存在一个深层目录结构,其中任何 Java 类都可以引用同一、子、兄弟或父文件夹中的另一个 Java 类. 如何使用 javac 从终端编译整个内容? 解决方案 你必须知道所有的目录,或者能够使用通配符.. javac dir1/*.java dir2/*.java dir3/dir4/*.java dir3/dir5/* ..
发布时间:2021-11-25 20:33:26 Java开发

为什么 javac 会抱怨与类的类型参数无关的泛型?

请按顺序阅读代码中的注释,问题详情在那里. 为什么会出现这种差异? 如果可能,请引用 JLS. import java.util.*;/*** 假设我有一个泛型类* @param 带有类型参数.*/类泛型 T{//除了正常使用T,T paramMethod() { 返回空值;}//类的接口也包含通用 Java 集合//不使用 T,而是不相关的类型.列表unrelatedMethod() ..
发布时间:2021-11-25 20:13:06 Java开发