问题标签 [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 投票
3 回答
542 浏览

java - 重载的包私有方法导致编译失败 - 这是 JLS 怪异还是 javac 错误?

我遇到了 JLS 的一个奇怪之处,或者一个 JavaC 错误(不确定是哪个)。请阅读以下内容并提供解释,并酌情引用 JLS 段落或 Sun Bug ID。

假设我有一个人为的项目,其中包含三个“模块”中的代码 -

  1. API - 定义框架 API - 思考 Servlet API
  2. Impl - 定义 API 实现 - 想想 Tomcat Servlet 容器
  3. App——我写的应用程序

以下是每个模块中的类:

API -MessagePrinter.java

API - MessageHolder.java(是的,它引用了一个“impl”类 - 稍后会详细介绍)

Impl - MessagePrinterInternal.java- 这个类依赖于一个 API 类。顾名思义,它是为我的小框架中其他地方的“内部”使用而设计的。

最后,App 模块中的唯一类...MyApp.java

所以,现在我尝试编译我的小应用程序 MyApp.java。假设我的 API jar 是通过一个 jar 导出的,比如 api.jar,并且作为一个好公民,我只在我的类路径中引用了那个 jar——而不是 impl.jar 中的 Impl 类。

现在,显然我的框架设计存在缺陷,API 类不应该对“内部”实现类有任何依赖。然而,令人惊讶的是 MyApp.java 根本没有编译。

问题是由于方法重载,编译器正在尝试解析要使用的版本 print()。但是,编译错误有点出乎意料,因为其中一种方法是包私有的,因此对 MyApp 不可见。

那么,这是一个 javac 错误,还是 JLS 的一些奇怪之处?

编译器:Sun javac 1.6.0_14

0 投票
4 回答
5797 浏览

java - Java 类路径中点 (.) 的作用是什么?

这是“SCJP 模拟考试”中的一个示例问题:

给定默认的类路径:

/foo

而这个目录结构:

而这两个文件:

哪个允许 B.java 编译?(选择所有适用的。)

A.设置当前目录xcom然后调用

B.设置当前目录xcom然后调用

C. 设置当前目录进行测试然后调用

D. 设置当前目录进行测试然后调用

E. 设置当前目录进行测试然后调用

答案是C,我不明白.那里的操作符的使用。请解释。

书上说:

为了B.java编译,编译器首先需要能够找到B.java. 一旦找到B.java,就需要找到A.class因为A.classxcomA.class包中,如果从xcom目录中调用它,编译器将找不到。请记住,它-classpath不是在寻找B.java,而是在寻找任何 B.java需要的类(在这种情况下A.class)。

我不明白,如果两个文件都在同一个包上,为什么编译器找不到 A?

0 投票
3 回答
25087 浏览

java - Java 访问被拒绝

这是我的编辑从第 27 行到第 39 行的代码:

我在想我的问题可能与 Win7 教授有关:(访问被拒绝)

我该如何解决这个问题,或者我需要做什么或阅读什么才能让它发挥作用?

谢谢你不火。

我刚刚更改了文件夹选项,以便我是给定的完整(访问...),现在我只需要弄清楚为什么在运行 javac VendingMachine.java 时我没有得到任何输出,我想一个新问题是有序的。

0 投票
10 回答
175398 浏览

java - 尝试编译 java 代码时出现非法字符

我有一个程序,允许用户在富文本框中键入 java 代码,然后使用 java 编译器对其进行编译。每当我尝试编译我编写的代码时,我都会收到一个错误,指出我的代码开头有一个不存在的非法字符。这是编译器给我的错误:

0 投票
3 回答
1207 浏览

java - Java 泛型:谁是对的,javac 还是 Eclipse 编译?

调用此方法:

像这样:

在 Eclipse 中编译得很好,但 javac 给出了“不兼容的类型”警告:

必需:Foo

0 投票
1 回答
3315 浏览

javac - javac编译错误

尝试创建一个导入另一个测试包的测试应用程序。

列出了测试应用程序,以及 compile cmd 和 err..

这些文件都在同一个目录中。我能够编译 MyIncorrectnessListener.java 和 MycssErrorHandler.java 而没有警告/错误。

我试图找出错误的原因 >>> sjsu_classes.java:33: '.' 预计<<<<<

任何指针/评论表示赞赏...

谢谢

编译 cmd/err

}

========================


0 投票
1 回答
2041 浏览

java - 如何从 javac 插件获取 MemberSelectTree 中表达式的类型?

我正在尝试以 JSR 269 格式编写注释处理器,它使用 javac 的编译器树 API 来进行一些源代码分析。我对成员选择表达式感兴趣,例如方法调用。

我可以很容易地获得被选择的方法(或字段等)的名称。但我想知道该成员是从什么类型中选择的,而且我似乎找不到一种直接的方法来做到这一点。Trees.getTypeMirror返回null我尝试调用它的所有内容(Javadoc 没有给出任何提示)。

我想我可以详尽地分析成员 select 左侧的每种表达式,并通过递归分析确定表达式的静态类型:NewClassTree, TypeCastTree, MethodInvocationTree,ArrayAccessTree等等。但这似乎是很多容易出错的工作,而且显然 javac 已经知道表达式的静态类型,因为它需要这些信息用于许多目的。但是我如何访问这种类型的信息?

到目前为止我所拥有的:

以及在一些简单的代码制作方法调用上运行时打印的内容:

0 投票
3 回答
5802 浏览

java - Java not compiling .class files under $CLASSPATH

I'm trying to figure out how organize source and class files working with packages. I found a very useful tutorial. But I still have some questions.

As far as I understood it is a good practice to have an isomorphism between name of packages and name of the directories where elements of a package are stored. For example if I have a package named aaa.bbb.ccc which contains class ddd it is a good practice to have a class file called "ddd.class" and located in "$CLASSPATH/aaa/bbb/ccc/". Did I get it right?

If it is the case, will Java compiler put *.class files into the correct directory automatically?

I was not able to get this behavior. I set the $CLASSPATH variable to "/home/myname/java/classes". I executed javac KeyEventDemo.java which contains package events;. I expected that javac will create a subdirectory events under /home/myname/java/classes and put the KeyEventDemo.class in this subdirectory.

It did not happen. I tried to help to javac and created "events" subdirectory by myself. I used javac again but it does not want to put class files under "/home/myname/java/classes/events". What am I doing wrong?

0 投票
3 回答
27738 浏览

java - Java中的注解处理是什么?

引用,Sun 的官方 Java 教程

仅当显式请求注释处理时才接受类名称“HelloWorldApp”

这是什么意思?以及如何应用它?

0 投票
1 回答
9225 浏览

java - 配置 Maven 2 以在编译阶段打印出 javac 命令

有什么方法可以强制 Maven 2 (>2.0.10) 打印它正在执行的实际 javac 命令。即使我们使用 MAVEN_OPTS 提高了最大值,我们仍然会耗尽内存。我希望能够看到正在执行的实际命令内存不足。

我尝试在 pom 文件的插件管理部分使用下面的详细设置,但这似乎没有给我 javac 命令: