Tag: javac

(JAVA)使用命令提示符从多个.class文件创建.jar文件

我编写了一个名为Main.java的.java文件,并使用Windows命令提示符中的javac编译它。 编译器正在创建多个.class文件(称为Main.class,Main $ 1.class,&Main $ 2.class – 可能是因为我在Main.java文件中有匿名内部类)。 我正在尝试创建一个可运行的.jar文件,这样我就可以双击快捷方式来运行这个应用程序(它是一个Java Swing应用程序),但是当我导航到三个类文件的目录并输入时,我不成功: jar cfv file.jar Main.class Main$1.class Main$2.class 命令提示符然后输出此文本: added manifest adding: Main.class(in 4871) (out = 2848)(deflated 41%) adding: Main$1.class(in 1409) (out = 833)(deflated 40%) adding: Main$2.class(in 1239) (out = 767)(deflated 38%) 尽管如此,当我在Windows资源管理器中双击file.jar文件时,简单地说,没有任何反应。 没有摆动应用程序打开 希望有人可以帮助我解决这个问题。 谢谢 最佳… SL

为什么这个代码在Java 1.6中编译而在Java 1.7中编译?

以下代码在Java 1.6中编译良好,但无法在Java 1.7中编译。 为什么? 代码的相关部分是对私有“数据”字段的引用。 引用来自定义字段的同一类,因此看似合法。 但它是通过一般类型的变量发生的。 这段代码 – 一个基于内部库中的类的简化示例 – 在Java 1.6中工作,但现在不在Java 1.7中。 我不是在问这个如何解决这个问题。 我已经做到了。 我试图找到解释为什么这不再起作用的原因。 想到三种可能性: 根据JLS,此代码不是法律的,应该永远不会编译(1.6编译器中存在错误,在1.7中已修复) 根据JLS,此代码是LEGAL并且应该编译(1.7编译器中引入了向后兼容性错误) 此代码属于JLS中的灰色区域 Foo.java: import java.util.TreeMap; import java.util.Map; public abstract class Foo<V extends Foo> { private final Map data = new TreeMap(); protected Foo() { ; } // Subclasses should implement this as ‘return this;’ public abstract […]

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

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

javac不承认

当我不断收到错误时,我该怎么办? ‘javac’未被识别为内部或外部命令,可操作程序或批处理文件 当我想编译我的jar或.class文件? 谢谢

允许“布尔”和“对象”的等式比较?

以下代码 public class TestComparison { public static void main(String[] args) throws Exception { boolean b = true; Object o = new Boolean(true); System.out.println(“comparison result: “+ (o == b)); // Eclipse complains about this expression } } 使用javac V1.7.0_15编译时没有错误,并在运行时打印“false”。 但是,Eclipse Juno抱怨“不兼容的操作数类型对象和布尔值”。 显然javac自动装箱原始布尔b ,然后通过对象相等比较o和autoboxed b ,产生false ,而Eclipse拒绝进行自动装箱。 根据Java语言规范,哪种是正确的行为? 我应该在哪里提交错误? 注意:如果我将o的类型更改为Boolean ,则按预期工作:Eclipse接受代码,代码打印为“true”。 ideone.com上的Runnable版本

错误:“只有在明确请求注释处理时才接受类名”

可能重复: Java编译问题:只有在显式请求注释处理时才接受类名 我遇到了一个问题。 我正在使用深红色的编辑器。 有人可以解释这个错误的含义吗? //这是我的节目 package test.rim.bbapps.testcase.lib; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class michaeltictactoe2 implements ActionListener { /* Instance variables */ private JFrame window = new JFrame (” TicTacToe”); private JButton button1 = new JButton (“”) ; private JButton button2 = new JButton (“”) ; private JButton button3 = new JButton (“”) […]

不推荐的编译错误

我正在尝试编译我的Java程序,但是我收到了“不推荐使用的文件”错误。 我通常通过键入“Javac FileName.java”来编译该文件,但是我收到一条错误消息: FileName.java使用或覆盖depreacted API。 有关详细信息,请使用Xlint弃用重新编译。 我在命令行输入什么以使其运行?

如何在ant中的javac任务中排除源?

我的build.xml中有以下内容: … 这主要做我想要的,除了(如评论所说)我不想要文件 ${src.dir}/com/foo/bar/quux/dontwant/将由此任务编译(但我确实希望在${src.dir}/com/foo/bar/quux/下编译其他所有内容这个任务)。 我是一个完整的antn00b,文档对我没什么帮助。 我看到有几个地方,它说有各种排除/排除元素/属性,但我能想到的每个变化都没有效果或导致错误,如“ blah不支持’exclude’属性”。

有没有办法提高Java编译器的多核/多处理器性能?

我的同事注意到,当javac正在编译时,它只使用一个核心。 是否有类似-j命令与Java的gcc,这将允许我们跨核心或处理器分配编译器工作负载? 如果没有,您是否认为这将是可能的,或者由于Java的设计是否存在某种基本限制? 环境是使用Sun J2SE 1.6.0.11 jdk的Linux。

为什么编译器声明没有唯一的最大实例存在?

我有以下课程: public class Obj extends BaseModel { public static final String OBJECT = “object”; public Obj(T object) { setObject(object); } public T getObject() { return get(OBJECT); } public void setObject(T object) { set(OBJECT, object); } } 和… /** This is a 3rd party library class **/ public class BaseModel implements ModelData, Serializable { //…members and […]