开发者

classpath specification

i have two programs one in directory /home/redhat/Documents/java1/j1

Demo1.java

package j1;
public class Demo1
{
        public void print()
        {
                System.out.开发者_高级运维println("hi");
        }
}

and the other in directory /home/redhat/Documents/java1/j

Demo2.java

import j1.*;
public class Demo2
{
        Demo2()
        {
                Demo1 d=new Demo1();
        }
}

when i say

javac -classpath /home/redhat/Documents/java1/j1 Demo2.java

i get the following error

Demo2.java:2: package j1 does not exist
import j1.*;
^
Demo2.java:7: cannot access Demo1
bad class file: /home/redhat/Documents/java1/j1/Demo1.java
file does not contain class Demo1
Please remove or make sure it appears in the correct subdirectory of the classpath.
                Demo1 d=new Demo1();
                ^
2 errors

i want to access instance of Demo1 in Demo2 please help.


Your classpath is wrong. You should point to the root of any declared packages:

javac -classpath /home/redhat/Documents/java1 Demo2.java

Other previous step that I miss is the compilation of Demo1 class. Javac compiler will look for ".class" files, not ".java" ones. So before executing that you need:

javac Demo1.java

As an improvement I would suggest you that you declare your second class inside package "j" instead of default package, since it is not a good idea to have root source paths inside another root path that already contains packages.


The classpath option specified in the command line of the javac executable is used to define the user classpath location where the compiler may find the compiled class files of types. In other words, the compiler expects compiled .class files in the user classpath.

In your case, you have a source class file, in which case you should use the sourcepath option of javac:

javac -sourcepath /home/redhat/Documents/java1 Demo2.java

javac will locate the j1 package under the user class path and hence resolve the type.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜