各位朋友有个问题,求解答:
有个文件 xTest.java
代码如下:
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class xTest {
public static void main(String []args) throws ClientProtocolException, IOException{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://www.baidu.com");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
String html = EntityUtils.toString(entity, "GBK");
httpget.releaseConnection();
System.out.println(html);
}
}
eclipse编译执行都没有问题;
我突然想用命令行来编译执行,编译javac xTest.java报错 找不到软件包;
于是我只好带包路径编译 javac -cp XXXXXXXXXXXXXXXXXXXX(中间省略无数字) xTest.java ,好了编译好了;
执行java xTest 又报错NoClassDefFoundError,又坑爹的带包路径执行了下java -cp XXXXXXXXXXXXXXXXXXXX(中间省略无数字) xTest,正确执行;
该死的httpClient的jar名字很长啊,如果要再来个mysql什么的jar的话,敲名字都要敲个半死。
我想找个简单一点的编译执行方式:
外部包在我硬盘上的路径:D:\tools\otherlib;
我也试过配置classpath,貌似不行:
我的电脑的目前 环境变量
classpath: .;%java_home%\lib;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;D:\tools\otherlib;
java_home: D:\Java\jdk1.6.0_45
Path: %java_home%\bin;D:\Java\jre6\bin;
各位朋友帮忙看看,有啥办法没有,我就想达到,用javac xTest.java可编译,java xTest 可执行,这个目的
------解决思路----------------------
额, 我说几种情况吧,
1, 配置过classpath后, 要重新打开一个新的命令行窗口
2, 配置的classpath应该是jar文件的路径, 比如 G:\java\test.jar, 而不是G:\java\*.jar, 也不是 G:\java (虽然我觉得应该可以, 但是,试验证明, 就是不可以)
3, 如果lz的操作系统是win8, 不要使用文件管理器-->文件-->打开命令提示符, 虽然我也不知道怎么回事, 但是这样打开的命令行并没有设置classpath
最后, 判断你的classpath是否设置成功的方法是,在命令行中输入:
echo %classpath%
如果输出中, 有lz需要的jar的路径, 且与相邻的其他jar路径之间有分号, 那就说明配置成功, 否则说明某个地方错误
------解决思路----------------------
有几个比较好的轮子,不要再造轮子了
ant,maven
一个文件编译执行都这么费劲,那规模系统的编译部署,估计要死人了啊~
------解决思路----------------------
放在java 的 ext 目录下是可以的,不过我在工作中遇到过这样的问题
situation 如下:
一个工程师部署了一个项目,他觉得ojdbc1.5 不好,给换成了1.6 的
结果导致我的所有的程序全部挂掉
所以建议还是不要存在ext 里面,还是放在自己工程的lib 目录下面吧