Java是否具有C#中的“Debug”和“Release”构建模式?

Java是否具有C#中的“Debug”和“Release”构建模式?

在C#中,我们有两种方式构建项目: DebugRelease ,我想知道Java是否有同样的事情。 我正在使用IntelliJ IDEA作为Java IDE,到目前为止,我还没有看到在VS IDE中配置构建模式。

采纳答案:
javac 
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info

您可以选择在已编译的类中包含调试符号(这是默认值)或不这样做。 没有这样做没有太多的好处。 jar文件会稍微小一些 ,但性能优势是最小的(如果有的话)。 没有这些符号,您不再在堆栈跟踪中获取行号。 您还可以选择使用本地变量名称添加额外的符号 (默认情况下只包含源文件名和行号)。

java
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions

您还可以在运行时启用断言(默认为关闭),这在开发和测试期间有时是有用的。 这确实有一个性能影响(如果该代码确实使用了断言,我认为是不常见的 )。

无论任何这些设置,JVM总是允许您附加调试器。

什么Java没有的是条件编译,其中将根据一些外部设置编译完全不同的代码。 最接近的是public static final boolean DEBUG_BUILD = true; 在你的代码的某处,并在if语句中使用它。 这实际上会使编译器排除变得无法访问的代码,但是您必须在源代码中设置此常量。

参考更多解答:Java是否具有C#中的“Debug”和“Release”构建模式?,转载请保留Java是否具有C#中的“Debug”和“Release”构建模式?

更多:debugging