请教Package的问题

fengzhizi715 2005-02-13 01:16:42
我写一个程序
/**
* Created by IntelliJ IDEA.
* User: fengzhizi
* Date: 2005-2-11
* Time: 22:43:48
* To change this template use Options | File Templates.
*/
package com.macfaq.net;
import java.net.URLEncoder;

public class QueryString {
private String query;

public QueryString(Object name,Object value)
{
query=URLEncoder.encode(name.toString())+"="+
URLEncoder.encode(value.toString());
}

public QueryString()
{
query="";
}

public synchronized void add(Object name,Object value)
{
if (!query.trim().equals(""))
query+="&";

query+=URLEncoder.encode(name.toString())+"="+
URLEncoder.encode(value.toString());
}

public String toString()
{
return query;
}
}


在命令行里输入javac -d . QueryString.java
然后又写了一个程序
/**
* Created by IntelliJ IDEA.
* User: fengzhizi
* Date: 2005-2-12
* Time: 14:39:07
* To change this template use Options | File Templates.
*/
import java.net.*;
import java.io.*;

public class DMoz {
public static void main(String args[])
{
String target=" ";

for (int i=0;i<args.length;i++)
{
target+=args[i]+" ";
}

target=target.trim();
QueryString query=new QueryString("search",target);
try
{
URL u=new URL("http://search.dmoz.org/cgi-bin/search?"+query);
InputStream in=new BufferedInputStream(u.openStream());
InputStreamReader theHTML=new InputStreamReader(in);
int c;
while ((c=theHTML.read())!=-1)
{
System.out.print((char) c);
}
}

catch (MalformedURLException e)
{
System.err.println(e);
}
}
}
在命令行里输入javac DMoz.java
DMoz.java:23: cannot access QueryString
bad class file:.\QueryString.java
file does not contain class QueryString
Please remove or make sure it appears in the correct subdirectory of the classpath.
QueryString query=new QueryString("search",target);
^
1 error


请问package的用法为何错了,谢谢!!
顺便祝大家新年快乐!

...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywb1973 2005-02-13
  • 打赏
  • 举报
回复
问题是javac -d . QueryString.java
你的第一个类本身就没有按包路径来进行编译呀
应该在com的上一层目录下用
javac com/macfaq/net/QueryString.java带包路径编译
ailingfor 2005-02-13
  • 打赏
  • 举报
回复
用import com.macfaq.net.QueryString;就行了
或者在用QueryString时用com.macfaq.net.QueryString代替就行了
另外InputStream in=new BufferedInputStream(u.openStream());这句会抛出IOException异常
你应该catch了!
fengzhizi715 2005-02-13
  • 打赏
  • 举报
回复
我加了import com.macfaq.net.*;

/**
* Created by IntelliJ IDEA.
* User: fengzhizi
* Date: 2005-2-12
* Time: 14:39:07
* To change this template use Options | File Templates.
*/
import java.net.*;
import java.io.*;
import com.macfaq.net.*;

public class DMoz {
public static void main(String args[])
{
String target=" ";

for (int i=0;i<args.length;i++)
{
target+=args[i]+" ";
}

target=target.trim();
QueryString query=new QueryString("search",target);
try
{
URL u=new URL("http://search.dmoz.org/cgi-bin/search?"+query);
InputStream in=new BufferedInputStream(u.openStream());
InputStreamReader theHTML=new InputStreamReader(in);
int c;
while ((c=theHTML.read())!=-1)
{
System.out.print((char) c);
}
}

catch (MalformedURLException e)
{
System.err.println(e);
}
}
}

但是编译的时候还是出现原来的错误
DMoz.java:24: cannot access QueryString
bad class file:.\QueryString.java
file does not contain class QueryString
Please remove or make sure it appears in the correct subdirectory of the classpath.
QueryString query=new QueryString("search",target);
^
1 error


感谢楼上的几位,但还是请教这是怎么回事??
daryl715 2005-02-13
  • 打赏
  • 举报
回复
第二个要import第一个
galois_godel 2005-02-13
  • 打赏
  • 举报
回复
应该加
import com.macfaq.net.*;

import com.macfaq.net.QueryString;
mkb12345678 2005-02-13
  • 打赏
  • 举报
回复
在第二个程序的开头加多以下这一句,就应该可以了
import com.macfaq.net;
ailingfor 2005-02-13
  • 打赏
  • 举报
回复
因为第一个程序编译后生成的class文件存放在/com.macfaq.net目录下,所以当第二个程序编译时在当前目录就找不到QueryString这个类
把第二个程序也放在com.macfaq.net包中,或者在第二个程序中用com.macfaq.net.QueryString代替QueryString,就可以解决问题

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧