Tag: 编译器构造

NetBeans使用哪种java编译器?

如果我告诉NetBeans(6.9)在save上编译,NetBeans警告我编译的类与用JDK编译器编译的类不同。 Java平台在同一对话框中设置为“JDK 1.6”。 NetBeans使用哪种编译器? 为什么NetBeans不使用JDK编译器? alt text http://sofzh.miximages.com/java/compileonsave.png

编译器内联的getter和setter的概率

我的问题很简单: 问: Java中的编译器会将getter / setter方法内联的几率是多少? (显然没有明确的答案,但其他信息将不胜感激) 额外:我知道编译器(标准和JIT)总是有可能决定内联方法,而当涉及到getter和setter这通常是程序员想要的。 提前致谢。

快速Java优化问题

Eclipse编译器会自动将乘法乘以2的幂来转换为位移,还是应该手动执行? 谢谢您的帮助。

如何从命令提示符编译servlet?

我想从命令提示符编译一个非常基本的servlet ,但它总是不成功,编译器告诉我以下内容: error: package javax.servlet does not exist. 我搜索了解决方案,我发现我需要将servlet.jar库包含到我的PATH中。 我相信我做到了。 我坚信我的计算机中这些库的位置是: C:\apache-tomcat-7.0.23\lib\servlet-api.jar\ 我的PATH的结尾(相关部分)如下: %JAVA_HOME%\bin;C:\apache-tomcat-7.0.23\lib\servlet-api.jar\ 对我来说,它看起来不错,但显然不是。 谁能告诉我可能是什么问题?

Enum遵循静态初始化程序的65535字节限制…最好的做法是什么?

我已经开始了一个相当大的所谓的Descriptors枚举,我想在我的模型中用作参考列表。 但是现在我第一次遇到编译器/ VM限制,所以我正在寻找最好的解决方案来处理这个问题。 这是我的错误: 静态初始化程序的代码超过65535字节限制 很明显这是从哪里来的 – 我的Enum只有很多元素。 但是我需要那些元素 – 没有办法减少那个元素。 最初,我计划使用单个枚举,因为我想确保枚举中的所有元素都是唯一的。 它用于Hibernate持久化上下文,其中对Enum的引用在数据库中存储为String值。 所以这必须是独一无二的! 我的Enum的内容可以分成几组属于一起的元素。 但拆分Enum会消除我在编译期间获得的独特安全性。 或者可以通过某种方式实现多个枚举? 我目前唯一的想法是定义一些名为Descriptor的接口,并编写几个实现它的Enum。 这样我希望能够使用Hibernate Enum映射,就好像它是单个枚举一样。 但我甚至不确定这是否有效。 我放松了独特的安全。 任何想法如何处理这种情况?

Java是否通过2的幂来优化除法?

Java编译器或 JIT编译器是否通过2的恒定功率优化除法或乘法到位移位? 例如,以下两个语句是否被优化为相同? int median = start + (end – start) >>> 1; int median = start + (end – start) / 2; (基本上这个问题,但对于Java)

(编译器)否则if(true)vs else scenario

获取以下Java代码段: …. else if (true){ //hard-coded as true ///launch methodA } else { ///launch methodA (same code as in the ` else if ` statement) } …. 我想知道的是编译器如何处理这个问题。 编译器完全删除else if(true)语句以便不必执行检查是不合逻辑的,即使它被硬编码为true。 特别是在Eclipse中,上面的代码是如何解释的? 或者在以下场景中如何: …. else if (true){ //hard-coded as true ///launch methodA } else { ///launch methodBB } …. 在这种情况下,编译器删除else语句不是合乎逻辑的吗? 因为在运行时, else语句无法访问。

javac错误“代码太大”?

我有一个unit testing,我已经静态定义了一个相当大的字节数组(超过8000字节)作为我每次运行unit testing时不想读取的文件的字节数据。 private static final byte[] FILE_DATA = new byte[] { 12,-2,123,……………. } 这在Eclipse中编译很好,但是当通过Ant脚本编译时,我收到以下错误: [javac] C:\workspace\CCUnitTest\src\UnitTest.java:72: code too large [javac] private static final byte[] FILE_DATA = new byte[] { [javac] ^ 任何想法为什么以及如何避免这种情况? 答 :Shimi的答案就行了。 我将字节数组移到一个单独的类,它编译得很好。 谢谢!

如何从java编译器树api生成注释生成的ast?

我已经使用java编译器树api为java源文件生成ast。 但是,我无法访问源文件中的注释。 到目前为止,我一直无法找到从源文件中提取注释的方法..有没有办法使用编译器api或其他工具?

如何在语法上实现JJTree

我有一个任务是使用JavaCC为讲师提供的语言制作一个带有语义分析的自上而下的解析器。 我已经写出了生产规则,没有错误。 我完全坚持如何将JJTree用于我的代码,而我在互联网上搜索教程的时间并没有让我任何地方。 只是想知道是否有人可以抽出时间来解释如何在代码中实现JJTree? 或者,如果有一个隐藏的分步教程,那将是一个很好的帮助! 以下是我的一些生产规则,以防他们提供帮助。 提前致谢! void program() : {} { (decl())* (function())* main_prog() } void decl() #void : {} { ( var_decl() | const_decl() ) } void var_decl() #void : {} { ident_list() type() ( ident_list() type())* } void const_decl() #void : {} { identifier() type() expression() ( identifier() type() expression())* } void […]