当前位置: 首页 > 面试题库 >

Java是否具有像C#这样的“调试”和“发布”构建模式?

邹曦之
2023-03-14
问题内容

在C#中,我们有2种模式来构建项目: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语句中使用它。这实际上会使编译器排除无法访问的代码,但是您必须在源代码中设置此常量。



 类似资料:
  • 问题内容: 我需要一个像STL多集一样工作的数据结构,但是Java中的TreeSet不允许重复的元素。Java中是否有等效于多集的内置数据结构? 问题答案: 标准Java库中没有Multiset。您应该使用包含Multiset类的Google Guava框架。 看到

  • 问题内容: PHP是否有像Java这样的虚拟机? 问题答案: 是。 与运行PHP的平台无关,这些脚本被编译为相同的字节码,并由Zend Engine运行。 与Java的区别在于,该编译后的代码通常不存储在单独的文件中,并且每次执行时都会重新编译脚本(但是,请参见操作码缓存)。

  • 问题内容: 在PHP中,使用可以很容易地传回json对象。 但是,是否有与之等效的XML? 问题答案: JSON可以原生地表达php数组,整数,字符串等。XML没有这样的概念,只有元素,属性和文本。如果要逐字转移对象,请使用JSON。如果要实现复杂的API,请使用XML,例如php DOM接口。

  • 这是我在发布模式下构建应用程序时发现的错误日志 /库/框架/单声道。framework/External/xbuild/Xamarin/Android/Xamarin。Android常见的目标:错误:执行任务链接程序集时出错:错误XA2006:引用元数据项“Xamarin”。形式。BindableProperty Xamarin。形式。BindableProperty::Create(System

  • 我试图上传我的与科尔多瓦客户端命令行命令,但谷歌播放一直说我在调试模式下构建的应用程序。 这是我用来构建apk的步骤(以下是答案) 这是谷歌的截图错误

  • 构建 当项目开发完毕,只需要运行一行命令就可以打包你的应用: # 打包正式环境 npm run build:prod # 打包预发布环境 npm run build:stage 构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。 如果需要自定义构建,比如指定 dist 目录等,则需要通过 co