当前位置: 代码迷 >> Eclipse >> myeclipse编译的有关问题
  详细解决方案

myeclipse编译的有关问题

热度:95   发布时间:2016-04-23 02:18:29.0
myeclipse编译的问题

myeclipse会自动编译保存的.java文件,但是我保存的时候有一行没有被编译而且很重要。
看到第六行了吗,这行始终没有编译,总是if(!isTokenValid(request, true)),有个!号没有去掉,为什么啊?

java 代码
  1. //单张图片上传???? ??
  2. ????public?ActionForward?sendOnePhoto(ActionMapping?mapping,?ActionForm?form,???? ??
  3. ????????????HttpServletRequest?request,HttpServletResponse?Response){???? ??
  4. ????????System.out.println("-------------------开始上传单张图片---------------");???? ??
  5. ????????System.out.println("+++++++++++++++++++++++++++"+isTokenValid(request,true));???? ??
  6. ????????if(isTokenValid(request,true)){
  7. ????????????System.out.println("---进来了,进来了,进来了---");???? ??
  8. ????????????PhotoManageForm?photoForm=?(PhotoManageForm)form;???? ??
  9. ???????????????

第一次我在第六行加了个“!” ,编译
第二次我把“!”去了,编译,查看.class文件,发现.class中的“!”没有去掉
1 楼 daoger 2007-01-16  
一堆代码,没找到“!”在哪里!
2 楼 simohayha 2007-01-16  
把你的 !用 红字显示出来.
3 楼 apollo_r 2007-01-16  
是没有,第六行,斜体的,我原先加了个“!”,后来去掉了,以后编译就一直在了
再说一点,是.java中没有“!”         .class中有“!”        
不知道我说清楚没有
4 楼 apollo_r 2007-01-16  
又有个新问题了,我同事在搞这段代码的时候,
isTokenValid(request,true)是等于true的,但是没有跳进if里面,而是跳出去了,为什么啊?。。好郁闷啊
5 楼 抛出异常的爱 2007-01-16  
删除文件重建文件
6 楼 apollo_r 2007-01-17  
删除重写。。myeclipse关了重开。。重构。。tom重启。。。清缓存。。重启机子。。都做了。。但是还是不行
现在在源文件中isTokenValid(request,true)前加个“!”号,.class文件中反而没有“!”号了。。不加.class文件中反而有。。这是为什么咧?这不应该啊
7 楼 花花公子 2007-01-17  
.class文件用什么查看啊?不应该能看到你这些东西啊。
8 楼 抛出异常的爱 2007-01-17  
文字中有转义符?
9 楼 apollo_r 2007-01-17  
反编译.class文件的东东很多的。。可以到网上搜一下

再说明下isTokenValid(request,true)方法是struts提供的方法。。是防止重复提交的。。可以在action中直接调用。。

还有同样是 if(isTokenValid(request,true)){}这段代码,在其他地方用(也是上传)编译后也还是该句,只有这个地方是这样。。
10 楼 抛出异常的爱 2007-01-17  
只能去看API了。。。十在不行就看原码吧

你的问题我试不出来
11 楼 apollo_r 2007-01-17  
给的就是源码啊。。。你可以去看看struts的token机制。。。很好用,也很好理解,但是问题是这个action生成的.class与源码的不一样(我指得是该行),在.class中生成的如下:

public ActionForward sendOnePhoto(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse Response)
    {
        FormFile file;
        System.out.println("-------------------开始上传单张图片---------------");
        System.out.println("+++++++++++++++++++++++++++" + isTokenValid(request, false));
        if(!isTokenValid(request, true))
            break MISSING_BLOCK_LABEL_720;
        System.out.println("---进来了,进来了-,进来了---");
//以下...

if(!isTokenValid(request, true))看到这条了吧,前面多了个“!”号。。。就是这个原因。。但是别的地方却没有多这个“!”
12 楼 apollo_r 2007-01-19  

仔细看了下是反编译的代码有出入。在其他位置反编译的类似代码中和先前的不同,所以才有这个问题。
如先前的.class文件是这样:
if(!isTokenValid(request, true))
break MISSING_BLOCK_LABEL_720;
其他位置类似的.class文件是这样的:
if(isTokenValid(request, true))
{。。。}
这就是不同,但是为什么同样的反编译器,编译类似的代码会有两种不同的解释呢?
  相关解决方案