以前没有注意过,其实Java编译成.class 有两种方式

使用javac,默认使用的release方式,而我们经常使用的MyEclipse工具,用的是debug模式。

区别暂时了解如下:

release模式下对于函数参数会改变

Test.java

public class Test {

private static void sayHello() {

System.out.println("Hello world");

}

public static void main(String[] args) {

sayHello();

}

}

分别用javac命令,和MyEclipse IDE编译上面的Test.java

然后使用jd-gui.exe 查看Test.class

可以发现,使用javac命令产生的Test.class(如下)和用MyEclipse编译(如下)出来的参数名上有所区别

public class Test {

private static void sayHello() {

System.out.println("Hello world");

}

public static void main(String[] args) {

sayHello();

}

}

public class Test {

private static void sayHello() {

System.out.println("Hello world");

}

public static void main(String[] paramArrayOfString) {

sayHello();

}

}

这也可以解释为什么在spring MVC 中controller的注解初始化参数建议指定名称

@RequestMapping(/test/{str})

public String test(@PathVariable String str){

System.out.println(str);

return null;

}

实际项目部署使用的是release版本,这样str而非RequestMapping中的{str}这样就对应不起来了。而这样的问题在开发中是不会发现的

java release_java的debug和release编译方式相关推荐

  1. 关于Debug和Release编译方式

    问:怎么在VC6中把工程编译成release版本? 答:可以project->Set Active Config,选中release版本.此后,按F5或F7编译所得的结果就是release版本. ...

  2. Debug 和 Release 编译方式

    Debug 和 Release 编译方式的区别本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样"调试& ...

  3. java编译release版本断言_关于Debug和Release之本质区别

    经常在 CSDN 上看见有人问 Debug 运行正常但 Release 失败的问题.以往的讨论往往是 经验性的,并没有指出会这样的真正原因是什么,要想找出真正的原因通常要凭运气.最 近我看了一些这方面 ...

  4. VS Debug和Release版本的区别

    VS Debug和Release版本的区别 1. 变量. 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值 ...

  5. 关于Debug和Release之本质区别的讨论

    一.Debug 和 Release 编译方式的本质区别     Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化 ...

  6. BOOL 值在 debug 和 release 模式下初始化不一样!!!

    原文:http://www.cppblog.com/lai3d/archive/2009/07/08/89514.html 未初始化的bool成员变量在Debug下默认值为false,Test下默认t ...

  7. debug和release的区别

    1.Debug和Release有什么区别,为什么要使用Release版本!  2.怎么把Debug转成Release Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至 数M ...

  8. 关于Debug和Release之本质区别的讨论(转载)

    一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...

  9. 项目发布Debug和Release版的区别

    https://www.cnblogs.com/taiyonghai/p/6126074.html 一.Debug和Release的区别 Debug:调试版本,包含调试信息,所以容量比Release大 ...

最新文章

  1. 关于编码、unicode、utf-8的讨论
  2. libgdx游戏引擎开发笔记(一)引擎介绍和Helloworld
  3. CentOS 7 用yum安装 MySQL
  4. 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中
  5. 数字天堂陷入困境_陷入困境:焦虑的四个迹象可能会影响您的工作
  6. 资源位图android4.2中为什么要高效的处理位图资源
  7. Maven的下载、安装和配置
  8. MOSS2007-学习笔记-备忘录-单点登录-(1)-我的网站'?
  9. R语言图表排版之一页多图
  10. linux 安装talib
  11. 学习银行转账系统-代码摘取csdn
  12. PGP加密解密QQ邮箱邮件
  13. matlab 指定ccs编译器,在CCS5.5中导入CCS3.3工程——指定编译器和修改prj文件
  14. python教程,python小甲鱼
  15. Linux与windows共享文件的神器:Samba
  16. 这苦日子B站熬出头了?
  17. 什么是西安80坐标系
  18. JSP: Taglib
  19. 牛逼!这个 Python 时间格式转换工具太优秀了!
  20. java jama_Java调用jama实现矩阵运算

热门文章

  1. 小程序判断一个对象是否为空 length不为0的空对象(空集合list)
  2. gog安装游戏显示服务器问题,修复Windows 10中的GOG游戏显示黑屏问题
  3. 登录失败、请确认地址和端口
  4. C语言练习二 :找出一个二维数组的鞍点
  5. Windows Server 2008 安装SVN
  6. 洛谷P2598 狼和羊的故事
  7. 《程序员》精彩推荐:如何为新员工找到团队“归属感”
  8. linux u盘文件乱码,linux挂载u盘,汉字乱码,怎么处理
  9. LeetCode (力扣) 17. Letter Combinations of a Phon (C) - Medium (递归法)
  10. 专访星环CEO孙元浩:成国产基础软件第一股 解决卡脖子工程