在C#中,我们有两种构建项目的模式:Debug
和Release
,不知道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 文件将为 a little smaller ,但性能优势很小(如果有的话)。如果没有这些符号,您将无法在堆栈跟踪中获得行号。您还可以选择包含 additional symbols with local variable names (默认只有源文件名和行号)。
java
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
您还可以在运行时启用断言(默认为关闭),这在开发和测试期间有时很有用。这确实会对性能产生影响(如果有问题的代码确实使用了断言,我认为是 uncommon)。
无论这些设置如何,JVM 始终允许您附加调试器。
Java 所没有的是条件编译,在这种编译中,将根据一些外部设置编译完全不同的代码。您可以得到的最接近的是 public static final boolean DEBUG_BUILD = true;
在代码中的某处并在 if 语句中使用它。这实际上会使编译器排除无法访问的代码,但您必须在源代码中设置此常量。
关于c# - Java 是否像 C# 一样具有 'Debug' 和 'Release' 构建模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613535/