编译总提示找不到符号,搞了一周多,快疯了

08-06-18 btking

一个web项目,用tomcat做服务器。

1.有全部类的.class文件,要对其中的一个类BaseSIPProxy.java进行修改,程序文件的路径G:\ROOT\WEB-INF\classes\com\sipserver\sip\proxy\BaseSIPProxy.java,先用反编译软件把整个程序的全部类文件反编译了,现在还没有对BaseSIPProxy.java进行修改,只是试着把它编译回去,就报出了这些错误。例如:

ROOT\WEB-INF\classes\com\sipserver\sip\proxy\BaseSIPProxy.java:8: 找不到符号

符号: 类 LifeCycle

位置: 软件包 com.sipserver

import com.sipserver.LifeCycle;

ROOT\WEB-INF\classes\com\sipserver\sip\proxy\BaseSIPProxy.java:9: 软件包 com.sipserver.model 不存在

import com.sipserver.model.Config;

2.只要是import了程序类的类文件,编译时都会报错找不到import的那些类,找不到符号。

3.今天试着编译了一个只import了类库的类文件,编译成功,并且替代以前的同名class文件,

程序运行时没有报错

4.自己写了一个test类,只调用了一个程序类,编译时也是同样的错误,报找不到符号

freebox
2008-06-19 09:30

可能是某些类在jar里您没有加入类路径。

有个我认为比较有效的方式来查找这些类,用rar打开任意一个jar文件,向上一级目录,然后用rar的搜索功能查找缺失的类,例如“LifeCycle”(不确定的话可加通配符)。找到后把这个jar加到编译库里就可以了。

skycity220
2008-06-19 10:26

个人觉得你原先那个jar要关联你这个编译的.所以得在classpath中加入这个jar的路径

btking
2008-06-20 11:29

1.LifeCycle的路径:G:\ROOT\WEB-INF\classes\com\sipserver\LifeCycle.java

2.jar的路径:G:\ROOT\WEB-INF\lib里面放着程序运行需要的所有jar

3.把LifeCycle.java编译成LifeCycle.class,替代原来的LifeCycle.class,程序能正常运行

4.即使把BaseSIPProxy.java编译成BaseSIPProxy.class,替代原来的BaseSIPProxy.class,启动tomcat时会报错,说BaseSIPProxy里的类cannot be resolved to a type。这个可能是因为反编译的文件里面有很多错,所以虽然编译成了class,但是也不能让程序正常运行,不知道我的想得对不对?

freebox
2008-06-20 13:15

BaseSIPProxy里是否有内部类需要一同编译但没反编译出来?或是被增强过的类(这个我只会用,不懂原理)反编译时不正确?

2Go 1 2 下一页