QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1866|回复: 10

Java自定义包问题,因为要交大作业,比较急.

[复制链接]
发表于 2003-5-13 20:06:35 | 显示全部楼层 |阅读模式
[code:1]
console.java

//Import this into an applet so that the applet can run as an application.

package tfw;

import javax.swing.*;
import java.awt.event.*;

public class console
{
        public static String title(Object o)
        {
                String t=o.getClass().toString();
                if(t.indexOf("class")!=-1)
                        t=t.substring(6);
                return t;
        }

        public static void setupClosing(JFrame frame)
        {
                //frame.setDefaultCloseOperation(EXIT_ON_CLOSE);//???
                frame.addWindowListener(
                        new WindowAdapter()//Event listening
                        {
                                public void windowClosing(WindowEvent e)
                                {
                                        System.exit(0);
                                }
                        }
                );
        }

        public static void run(JFrame frame,int width,int height)
        {
                setupClosing(frame);
                frame.setSize(width,height);
                frame.setVisible(true);
        }

        public static void run(JApplet applet,int width,int height)
        {
                JFrame frame=new JFrame(title(applet));
                setupClosing(frame);
                frame.getContentPane().add(applet);
                frame.setSize(width,height);
                applet.init();
                applet.start();
                frame.setVisible(true);
        }

        public static void run(JPanel panel,int width,int height)
        {
                JFrame frame=new JFrame(title(panel));
                setupClosing(frame);
                frame.getContentPane().add(panel);
                frame.setSize(width,height);
                frame.setVisible(true);
        }
}
[/code:1]

我照着书打了这个文件,并且编译通过.

我想把这个文件打进一个名为"tfw"的包里,以便今后些程序可以随时调用.

比如下面这个文件,将引用上述文件的内容:
[code:1]
import java.lang.System;
import javax.swing.*;
import java.awt.*;
import tfw.*;
import java.awt.event.*;

public class button
{
        ......
        ......
        ......
        public static void main(String args[])
        {
                new button();
        }
}
[/code:1]

我的操作步骤以及提示如下:
[code:1]
[root@TFW-RHL73 newtest]# javac -d /usr/jclass/ ./console-java/console.java

[root@TFW-RHL73 newtest]# CLASSPATH=/usr/jclass/

[root@TFW-RHL73 newtest]# javac button.java

button.java:4: package tfw does not exist

import tfw.*;

^

1 error

[root@TFW-RHL73 newtest]# _
[/code:1]

为什么?我应该怎么做?
发表于 2003-5-14 05:41:18 | 显示全部楼层
我想学java,可我现在还不会,没法帮你,呵呵
回复

使用道具 举报

发表于 2003-5-14 11:47:16 | 显示全部楼层
方法一 确定两部分的代码文件在一个目录下面
方法二 严格的根据包名创建目录
回复

使用道具 举报

 楼主| 发表于 2003-5-14 15:13:29 | 显示全部楼层
1——我原先还没有设定过“CLASSPATH”,以前运行java程序总是先cd到*.class文件所在的目录去,还没有碰到过问题,这次要设置“CLASSPATH”,还真不知道怎么办。

2——据说,修改“/etc/profile”很可能把原来的默认“CLASSPATH”冲掉。为了防止出意外,我把它复制了一份。但是我搜索过“/etc/profile”,里没有“CLASSPATH”这个字符串。

3——能具体一点吗?命令是什么样?“/etc/profile”应该在什么地方怎么修改?

4——我的“button.java”位于“/root/work/java/newtest/”,“console.java”位于“/root/work/java/newtest/console-java/”,“console.class”和“console$1.class”位于“/usr/jclass/tfw”。包名为“tfw”。那么我在设置“CLASSPATH”的时候,应该设置为“/usr/jclass/tfw/”还是“/usr/jclass/”?
回复

使用道具 举报

发表于 2003-5-14 15:28:01 | 显示全部楼层
1. 明确的设置calsspath总是好的 最好就是写到profile里去
2. 当然了 否则干嘛要你指定?
3. 汗 用任何文本工具打开/etc/.profile 编辑......
4. CLASSPATH里加上你的包目录 是加上
回复

使用道具 举报

 楼主| 发表于 2003-5-14 15:38:24 | 显示全部楼层
[quote:cd1f7b90a0="wsm"]方法一 确定两部分的代码文件在一个目录下面[/quote]

那不是以后每写一个程序都要拷一次这个文件?

[quote:cd1f7b90a0="wsm"]用任何文本工具打开/etc/.profile 编辑...... [/quote]

vi我会用,可是添加什么内容呢?以前系统是否有默认的"CLASSPATH"?如果有,如何使之不被冲掉?

[quote:cd1f7b90a0="wsm"]CLASSPATH里加上你的包目录 是加上[/quote]

是加上“/usr/jclass/tfw/”还是“/usr/jclass/”?

谢谢.另外,你的QQ=?
回复

使用道具 举报

发表于 2003-5-15 12:44:45 | 显示全部楼层
1本来就要的阿 没有包你的代码怎么用里面的类?不管是编译还是使用都是 只不过是目录的问题的两种解决方法 当然你自己也可以使用方法2
2加上export CLASSPATH=$CLASSPAThxx/xxx/xxx...
3看你决定把包放在那里
4我不用qq
回复

使用道具 举报

发表于 2003-5-15 16:15:23 | 显示全部楼层
我一般都会把PACKAGE里的东西 (FILE也好FOLDER也好) 放在CLASSPATH的目录下

如果像楼主那样的话, 干脆把"/" 加为CLASSPATH, 以后所有的PACKAGE就写全PATH好了

举楼主的例子, CLASSPATH设到"/": set CLASSPATH=$CLASSPATH:/
然后PACKAGE就是: package user.jclass.tfw;

P.S.: 个人认为把CLASSPATH和PATH之类的写在自己的HOME下的.bash_profile文件里更好

set PATH=$PATH:根上您想要的目录
set CLASSPATH=$CLASSPATH:根上您想要的目录

这样写会把新的PATH和CLASSPATH加上
回复

使用道具 举报

 楼主| 发表于 2003-5-15 16:23:25 | 显示全部楼层
问题解决了。试了一中午。
我在“/etc/profile”里比较靠前的地方(那些“{”、“}”之类让人晕的语句之前)添加了“export CLASSPATH="/usr/jclass":"./"”。
回复

使用道具 举报

 楼主| 发表于 2003-5-15 16:37:46 | 显示全部楼层
也向关注过这个问题的同志们致谢。
回复

使用道具 举报

发表于 2003-5-20 17:28:06 | 显示全部楼层
it is most important that your file named ".java" must be located under the path named "/tfw", and you 'll compile this program under this path.
Attention :you should already set env and path in your .bashrc file below your home.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 20:41 , Processed in 0.062804 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表