Tag: javac

javac优化标志

我最近在C中编写了很多代码,现在正在转向Java。 我目前正在实现一个大型数据结构,并且想知道在调用Java编译器时是否有任何优化标志,以便提高gcc中的性能。 我习惯了: gcc -O3 -NDEBUG MyProgram.c javac有一个类似的命令吗? 我正在使用JDK并运行Ubuntu 10.04。

Java编译平台文件编码问题

这是我发布堆栈溢出的第一篇文章。 我从1998年开始做Java,所以我不是初学者。 最近我遇到了一个我记不起来的文件字符编码问题。 在不同平台上运行时,必须了解文本文件的字符编码和编写正确处理编码的代码是很常见的。 但我发现的问题是由与执行平台不同的平台上的编译引起的。 这完全出乎意料,因为根据我的经验,当javac创建一个类文件时,重要的参数是java源和目标params,以及进行编译的JDK的版本。 我的情况是,在Mac OS X上使用JDK 1.6.0_22编译的类与在Linux上运行时使用1.6.0_23-b05编译的类不同,在Mac OS X上运行时。指定的源和目标是1.4。 使用PrintStream println方法将在内存中编码为ISO-8859_1的String写入磁盘。 根据Java代码编译的平​​台,字符串的编写方式不同。 这导致了一个错误。 该错误的修复是在编写和读取文件时明确指定文件编码。 让我感到惊讶的是,行为的不同取决于编译类的位置,而不是运行类的平台。 我非常熟悉Java代码在不同平台上运行时的行为方式。 但是,当在不同平台上编译的相同代码在同一平台上以不同方式运行时,它有点可怕。 有没有人遇到过这个具体问题? 对于在没有明确指定字符编码的情况下读取和写入字符串到文件的任何Java代码,似乎都不适用。 这种情况经常发生多少次? 谢谢, Richard Brewster http://rabbitsoftware.com

如何编译具有jar依赖项的java文件?

我有一个帮助库,我写的是坐在Apache Commons之上,当我尝试javac它(这样我就可以把它变成一个jar子里)它很合理地抱怨它不知道我在说什么当我参考commons.jar中的内容时。 如何包含一个jar,以便javac可以编译?

尝试用资源引入无法访问的字节码

javac是否有可能为以下过程生成无法访问的字节码? public void ex06(String name) throws Exception { File config = new File(name); try (FileOutputStream fos = new FileOutputStream(config); PrintWriter writer = new PrintWriter(new OutputStreamWriter( fos , “rw”))) { bar(); } } 当我查看字节码的exception表(javap -v)时,有以下条目看起来很奇怪: 43 48 86 Class java/lang/Throwable 43 48 95 any 和 21 135 170 Class java/lang/Throwable 21 135 179 any 现在的问题是,如果捕获了类型为“any”而不是Throwable的exception,则只能访问某些代码。 是否有任何可能发生这种情况的情况? […]

JDK / JRE / JVM / Java SDK | 这些都意味着什么? 有时您可以使用JRE进行开发,有时您需要JDK?

说实话,我对所有这些术语都非常困惑(JDK / JRE / Java SDK)。 我不确定每个人做了什么。 当我第一次在eclipse中开始做简单的java示例时,我很确定我只有JRE,我认为这是普通用户能够在其系统上运行java程序/ applet的默认java安装程序。 但是,现在我们在课堂上使用Google Appengine,这需要我猜的JDK与Java SDK相同。 在浪费一些时间发现安装JDK意味着我还必须将java / bin添加到环境变量以使javac -version在命令提示符下工作我发现只有JDK有javac … 我的早期java程序如何在没有安装JDK的情况下工作,因此没有javac? 而且真正的主要问题是…… JRE和JDK之间有什么区别,你什么时候使用它们? 谢谢 :)

为类生成多个.class文件?

出于好奇,为什么有时在编译后为类生成多个Java .class文件? 例如,我的应用程序有六个类。 对于一个类,总共生成了10个.class文件,从MyClass#1开始到MyClass#10。

如何在不同的目录中编译和运行Java类?

我正在编写一个makefile,在另一个目录中编译.java文件,然后我想运行它,而不更改目录。 我想做一些事情: $(SQM_JAVA_TOOL_DONE) : $(SQM_JAVA_TOOL) $(shell cd /home_dir) javac myjavafile.java java myjavafile 其中Java文件是/home/myjavafile.java ,并且makefile没有从/home运行。 我怎样才能做到这一点?

java中初始化字符串的大小

显然,javac中初始化字符串的大小是有限制的。 任何人都可以帮我确定最高限度是什么吗? 谢谢 编辑: 我们正在构建一个初始化字符串,它看起来像“{1,2,3,4,5,6,7,8 ……}”,但理想情况下有10,000个数字。 当我们为1000执行此操作时,10,000会抛出错误,说代码对于try语句来说太大了。 为了生成这个,我们使用stringbuilder并循环遍历值的数组。 显然这是javac的一个限制。 我们被告知,如果我们以小块的forms传递它,我们可以在我们调用的方法中重建数组。 然而,这是不可能的,因为我们无法控制我们正在调用的用户方法。 我想发布代码,但不能,因为这是一个大学的项目。 我不是在寻找代码解决方案,只是帮助理解这里的实际问题。 它的for循环是罪犯 Object o = new Object() { public String toString() { StringBuilder s = new StringBuilder(); int length = MainInterfaceProcessor.this.valuesFromData.length; Object[] arrayToProcess = MainInterfaceProcessor.this.valuesFromData; if(length == 0) { //throw exception to do } else if(length == 1) { s.append(“{” + Integer.toString((Integer)arrayToProcess[0])+”}”); } […]

javac源和目标选项

我已经看到了JDK的发行版可以运行`javac -source 1.6 -target 1.5`中讨论的编译选项? 。 我理解源和目标的各个选项。 我不明白为什么源版本高于目标版本。 编译旧目标的代码是有道理的。 但在这种情况下,为什么我们不使用我们希望能够运行的最老目标的-source

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

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