3

如果我在包中有一个类,mypackage.myclass并且想要访问与包的根目录(不在包内)位于同一文件夹中的包的类,那么anothepackage.anotherclass我该怎么做?

代码中的示例:

// directories are preceeded by a DIR, files are precedded by a CLASS
// any level deeper is preceeded by a [Tab]
DIR mypackage
    CLASS myclass
    DIR myinnerpackage
        CLASS myinnerclass
DIR anotherpackage
    CLASS anotheclass
CLASS yetanotherclass
DIR org
    DIR apache
        DIR commons
            DIR exec
                CLASS DefaultExecutor

在文件 myclass 中:

package mypackage;

public class myclass{
    // simplest example  code I can come up with
    org.apache.commons.exec.DefaultExecutor exec = new org.apache.commons.exec.DefaultExecutor();
}

为什么这段代码对我不起作用?

通常如何myclass访问anotherclassyetanotherclass如何myinnerclass访问它们?尽量避免导入,因为我只想使用每个类的某些成员(某些变量具有相同的名称并且会搞砸)!提前致谢!

4

2 回答 2

1

使用相对路径:

String dir = "../anotherpackage/anotheclass";
              ^
              |
              -- (go one level up)
于 2012-10-06T17:41:49.310 回答
1

爪哇对吗?

在我的班级里面

import anotherPackage.anotherClass;

然后在你的 myClass 里面你可以使用

  anotherClass ac=new anotherClass();

然后使用对象“ac”,您可以访问任何 anotherClass 属性。

您可能想阅读有关包和导入的信息

在不使用导入的情况下进行编辑我可以使用完全限定名称的概念试试

anotherPackage.anotherClass ac=new anotherPackage.anotherClass()

然后使用 ac toacees anotherClass 属性

顺便说一句,不同的类有一些相同的变量,导入可能会搞砸。Java 围绕对象工作,相同的名称不会真的搞砸。即使某些变量是静态的,您也将使用 classnames.staticVar 进行访问。所以没有太多的混乱。:-)

更新:下面的讨论已移至聊天,因为它从聊天中获得了一些有用的片段

Askee 面临类路径问题

CLASSPATH ,顾名思义,它是类的路径。当我们编译一个java文件时,编译器会在当前目录和类路径中寻找类需要的资源。一切都不能在同一个目录中(实际上可以,:-)),所以我们使用

set CLASSPATH

设置类路径以及在哪里寻找类

在问题中,ckass myClass 没有被编译为

org.apache.common.exec.DefaultExecutor was not in classpath

建议在类路径上设置父目录以使其工作

javac -classpath %cd%\.. myclass.java
于 2012-10-06T17:50:18.010 回答