日期:2014-05-17  浏览次数:20884 次

引用了外部的SDK,javac编译总是报“找不到符号”
Java code
package com.yourdomain.webcanvas;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.renren.api.client.RenrenApiConfig;
import com.yourdomain.webcanvas.config.AppConfig;

public class ApiInitListener implements ServletContextListener{

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        //Nothing to do
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        RenrenApiConfig.renrenApiKey = AppConfig.API_KEY;
        RenrenApiConfig.renrenApiSecret = AppConfig.APP_SECRET;
    }
}


编译时提示:

Java code

F:\JSPLesson\renrenapp\WEB-INF\classes>javac -d . ApiInitListener.java
ApiInitListener.java:5: 软件包 com.renren.api.client 不存在
import com.renren.api.client.RenrenApiConfig;
                            ^
ApiInitListener.java:17: 找不到符号
符号: 变量 RenrenApiConfig
位置: 类 com.yourdomain.webcanvas.ApiInitListener
                RenrenApiConfig.renrenApiKey = AppConfig.API_KEY;
                ^
ApiInitListener.java:18: 找不到符号
符号: 变量 RenrenApiConfig
位置: 类 com.yourdomain.webcanvas.ApiInitListener
                RenrenApiConfig.renrenApiSecret = AppConfig.APP_SECRET;
                ^
3 错误



可是这个程序需要的SDK我都丢到相关的目录里去了,还是报错!
附:相关文件
Jstl-impl-1.2.jar 
Jstl-api-1.2.jar
Json-simple-1.1.jar
Renren-api-java-sdk.jar

为了怕漏了,我把这四个文件全部丢到了以下目录里
D:\Java\lib
D:\Java\jre\lib
D:\Java\jre6\lib
D:\Tomcat\lib
F:\JSPLesson\renrenapp\WEB-INF\lib (这个是servlet的工程目录里)

编译依旧报错 现在想了解两个问题:

1 我现在这种情况 怎么做才能通过编译?
2 外部引用了SDK的情况下,下载下来的JAR包应该放在哪里?我上面放的那5个目录都叫Lib 有啥区别?

------解决方案--------------------
两种方法
1.将jar设置到classpath中去。set classpath=%classpath%;%libpath%\
Renren-api-java-sdk.jar;.....
2.javac -cp ........jar 你要将要用到的jar包

Assembly code
set JAVA_HOME=D:\jdk160_14_R27.6.5-32

set classpath=.;%JAVA_HOME%\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;%cd%\lib\ipLibUtil.jar;%cd%\config;

%JAVA_HOME%\jre\bin\javaw.exe com.xxxx.adms.Run ipdata_converter