Tag: 编译器构造

使用Java中的命令行编译多个包

您好我一直在使用IDE,但现在我需要从命令行运行和编译。 问题是我有多个包,我试图找到答案但没有任何效果。 所以我有 src/ Support/ (.java files) Me/ (.java files) Wrapers/ (.java files) 你知道如何使用javac编译所有内容吗?

适用于Java 5和Java 6的即时内存Java代码编译

如何从Java 5和Java 6中的任意字符串(在内存中)编译java代码,加载它并在其上运行特定方法(预定义)? 在你点燃之前,我查看了现有的实现: 大多数人依赖Java 6 Compiler API。 那些没有,依靠技巧。 是的,我检查了commons-jci。 要么我太密集了,不能理解它是如何工作的,要么就是它没有。 我找不到如何向编译器提供当前的类路径(这是非常巨大的)。 在有效的实现上(在Java 6中),我找不到如何正确加载内部类(或内部匿名类)。 如果整个东西都在内存中,我会非常喜欢它,因为它在多个环境中运行。 我确信之前已经解决了这个问题,但我找不到任何看起来甚至是谷歌半生产质量的东西(除了jci,正如我之前所说,我还没有设法使用)。 编辑: 我查看了JavaAssist – 我需要内部类,Java 5.0语言级支持以及使用整个类路径进行编译。 另外,我想动态创建新类。 我可能弄错了,但我找不到如何用JavaAssit做到这一点。 我愿意使用基于文件系统的解决方案(调用javac),但我不知道如何划分类路径,也不知道如何使用特殊的类加载器加载文件(不在我的类路径中)回收多次调用。 虽然我知道如何研究它,但我更喜欢现成的解决方案。 Edit2:现在,我满足于BeanShell“评估”。 显然,它完成了我需要它的一切(获取一个字符串,在’当前’类路径的上下文中评估它。它确实错过了一些Java 5特性,但它可以使用枚举(不定义)和编译’generics’(擦除) )类,所以它应该足够我想要的东西。 我不想将答案标记为已被接受,因为我希望能找到更好的解决方案。 Edit3:接受了beanshell建议 – 它确实非常有用。

为什么带有内部类的Java代码会生成第三个SomeClass $ 1.class文件?

如果我有一个内部类,像这样: public class Test { public class Inner { // code … } public static void main(String[] args) { // code … } } 当我编译它时,我希望它应该生成两个文件: Test.class Test$Inner.class 那么为什么我有时会看到像SomeClass $ 1.class这样的类文件,即使SomeClass不包含一个名为“1”的内部类?