Tag: javac

Javac与1.7的交叉编译

伙计们, 我正在尝试使用Ant和终端上的Javac Cross编译。 在本地和集成环境中,我在最基本的问题上遇到了同样的问题。 我在linux终端中运行它(以及我在windows和cmd上的cygwin): javac -target 1.6 -source 1.7 -bootclasspath /usr/java/jdk1.6.0_27/jre/lib/rt.jar Main.java 与Main.java只有System.out.println。 javac -version ==> javac 1.7.0_11 我收到错误消息: javac: source release 1.7 requires target release 1.7 我在本地Windows机器上的配置大致相同,结果完全相同。 我的理解是,交叉编译是关于使用更高版本的jdk编译与更高版本jdk兼容的一些源代码,但是传递目标版本的rt.jar,它应该更低。 如果目标和来源相同,那就有效了。 target=1.7 and source=1.7 workd fine target=1.6 and source=1.6 worked just fine 但我想要交叉编译,那么我做错了什么呢? 我感谢所有可以得到的帮助,并提前感谢。

什么是Java中的注释处理?

引用, Sun的官方Java教程 只有在明确请求注释处理时,才接受类名“HelloWorldApp” 这是什么意思? 以及如何应用它?

编译Java类时禁用编译时依赖性检查

考虑以下两个Java类: a.) class Test { void foo(Object foobar) { } } b.) class Test { void foo(pkg.not.in.classpath.FooBar foobar) { } } 此外,假设在类路径中找不到pkg.not.in.classpath.FooBar 。 第一个类将使用标准的javac进行编译。 但是,第二个类不会编译,javac会给你错误消息”package pkg.not.in.classpath does not exist” 。 在一般情况下,错误消息很好,因为检查依赖项允许编译器告诉您是否有一些方法参数错误等。 虽然很好,也很有帮助,但在编译时检查依赖项是非常严格需要AFAIK来生成上面示例中的Java类文件。 你能举一个例子,在没有执行编译时依赖性检查的情况下,在技术上不可能生成有效的Java类文件吗? 您是否知道有任何方法可以指示javac或任何其他Java编译器跳过编译时依赖性检查? 请确保您的答案解决了这两个问题。

如何在编译java项目时找出实际使用的jar文件

我目前正在将一个非常大的类路径传递给javac来编译一个java项目。 我知道不需要那些jar文件。 有没有一种简单的方法可以找出不需要哪些文件?

注释处理器,生成编译器错误

我正在尝试创建一个自定义注释,例如,确保字段或方法既是public也是final ,如果字段或方法不是public和final ,则会产生编译时错误,如下例所示: // Compiles @PublicFinal public final int var = 2; // Compiles @PublicFinal public final void myMethod {} // Compile time error @PublicFinal private final int fail = 2; 到目前为止,我已经制作了两个自定义注释界面: import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Documented @Retention(RetentionPolicy.SOURCE) @Target({ElementType.METHOD, ElementType.FIELD}) public @interface PublicFinal { } 和Processor : import javax.annotation.processing.AbstractProcessor; […]

导入外部jar文件

我编写了一个Java代码,用于导入外部jar文件。 如何在命令行上编译和运行它? 提前致谢!

javac如何自动编译类的依赖关系

给定以下目录结构: /top |— wrk |— pkg |— A.java |— B.java 假设两个文件A.java和B.java分别包含以下代码: // Filename: A.java package pkg; class A { B b; } // Filename: B.java package pkg; class B {…} 假设当前目录是/top/wrk 为什么命令javac -cp . pkg/A.java 即使我们还没有编译B.java javac -cp . pkg/A.java能成功B.java ? 此外,如果当前目录是/top/wrk/pkg javac A.java /top/wrk/pkg则命令javac A.java可以工作。 怎么会这样?

从1.6升级到1.7(基于maven的项目)后,无法在Jetbrains Intellij中使用Java 1.7进行编译

使用基于Maven项目的Jetbrains 11.2项目。 然后我需要移动到1.7。 我安装了1.7,我更新了我的pom.xml,我可以使用maven重建整个包。 我修改了我在Intelli Projects设置中可以看到的有关Java版本的每个设置 项目SDk 项目语言水平 模块语言/来源/语言水平 模块语言/依赖关系/模块SDK 但我不能让它编译它抱怨的文件: Error:javac target release of 1.6 conflicts with source release 1.7 然后我尝试使用相同的代码库,但使用不同的Intellij项目在我的另一台开发机器上,我得到了类似的错误: Error:javac: source release 1.7 requires target release 1.7 我无法看到任何其他改变,以使这项工作。

javac错误:带有generics的不可转换的类型?

还有其他几个SO问题正在讨论generics编译OK / Eclipse的编译器而不是javac(即Java:Generics在Eclipse中处理差异,javac和Generics编译并在Eclipse中运行,但不在javac中编译 ) – 但这看起来很像就像一个略有不同的人。 我有一个enum类: public class LogEvent { public enum Type { // … values here … } … } 我有另一个类,其方法接受来自Enum任意类型的对象: @Override public <E extends Enum> void postEvent( Context context, E code, Object additionalData) { if (code instanceof LogEvent.Type) { LogEvent.Type scode = (LogEvent.Type)code; … 这在Eclipse中运行良好,但是当我使用ant构建一个干净的时候,我得到了一对错误,一个在instanceof上,另一个在转换行上: 443: inconvertible types [javac] found : […]

JAVA:缺少退货声明

我现在对此代码的主要关注是缺少返回语句。 public class stringstuff{ //using charAt public static String ReverseF(String n){ String finalstring = “”; int len = n.length(); for (int i = 0; (i < n.length()); i++){ finalstring += (n.charAt(len – i – 1)); } System.out.println(finalstring); } public static void main(String[]args){ ReverseF("Hello"); } } 使用此代码我只得到错误: stringstuff.java:11: missing return statement } ^ 1 error 如果我切换System.out.println返回,我没有得到任何错误,但我也没有得到ReverseF的答案(“你好”);