从包内访问父文件夹包

时间:2012-10-06 17:40:00

标签: java packages

如果我在一个包中有一个类mypackage.myclass,并且想要访问与包的根目录(不在包内)相同的文件夹中的包类,请说{ {1}}我怎么能这样做?

代码中显示的示例:

anothepackage.anotherclass

在myclass文件中:

// 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

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

一般来说,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(); } 如何myclassanotherclass以及yetanotherclass如何能够访问它们?尝试克制导入,因为我只想使用每个类的某些成员(一些变量具有相同的名称并且会使事情搞乱)!提前谢谢!

2 个答案:

答案 0 :(得分:1)

使用相对路径:

String dir = "../anotherpackage/anotheclass";
              ^
              |
              -- (go one level up)

答案 1 :(得分:1)

Java吧?

在myClass中

import anotherPackage.anotherClass;

然后在myClass中你可以使用

  anotherClass ac=new anotherClass();

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

您可能想了解有关包裹和进口的信息

编辑 不使用进口 我可以使用完全限定名称的概念尝试

anotherPackage.anotherClass ac=new anotherPackage.anotherClass()

然后使用ac toacees anotherClass属性

按照你提到的方式,不同的类有一些相同的变量,导入可能会搞乱。 Java可以解决对象的问题,同样的名字也不会搞砸。即使某些变量是静态的,您也将使用classnames.staticVar进行访问。搞得太多了。 :-)

更新: 下面的讨论被转移到聊天,因为它变得越来越全面 聊天中的一些有用的片段

Askee面临类路径问题

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

set CLASSPATH

设置classpath以及在哪里查找类

在问题中,ckass myClass没有将compilec作为

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

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

javac -classpath %cd%\.. myclass.java