Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一个类中包含充满可重用函数的类_Java_Javac - Fatal编程技术网

Java 在另一个类中包含充满可重用函数的类

Java 在另一个类中包含充满可重用函数的类,java,javac,Java,Javac,在PHP中,我可以有这样一个文件: function isPrime($num) { return true; } function sayYes() { echo "yes\n"; } package com.awesome.mycode.file1; public class File1 { public static void main(String[] args) { MyCodeFunctions.sayYes(); } }

在PHP中,我可以有这样一个文件:

function isPrime($num)
{
    return true;
}

function sayYes()
{
    echo "yes\n";
}
package com.awesome.mycode.file1;

public class File1
{
    public static void main(String[] args)
    {
        MyCodeFunctions.sayYes();
    }
}
package com.awesome.mycode;

public class MyCodeFunctions
{
    public static void sayYes()
    {
        System.out.println("yes");
    }
}
该文件名为
functions.php
,位于名为
mycode
的文件夹中 我有另一个文件:

include "../functions.php";
if (isPrime()) {
    sayYes();
}
它位于名为
file1.php的文件中,位于名为
file1
的文件夹中。
file1
文件夹位于
mycode
文件夹内

这个例子的要点是,我有一个文件,其中包含一大堆函数,我希望能够在其他文件中重复使用这些函数。我将在
mycode
文件夹中有许多文件夹(
file1
file2
file3
等)。每个子文件夹中的所有代码都是完全独立的,并且与所有其他子文件夹中的所有代码无关。但是,我希望在所有子文件夹的代码中使用一些通用函数,因此它被放置在顶级文件夹中。

在Java中,我有这样一个文件:

function isPrime($num)
{
    return true;
}

function sayYes()
{
    echo "yes\n";
}
package com.awesome.mycode.file1;

public class File1
{
    public static void main(String[] args)
    {
        MyCodeFunctions.sayYes();
    }
}
package com.awesome.mycode;

public class MyCodeFunctions
{
    public static void sayYes()
    {
        System.out.println("yes");
    }
}
该文件名为
File1.java
,与上述
File1
文件夹相同。
我有另一个这样的文件:

function isPrime($num)
{
    return true;
}

function sayYes()
{
    echo "yes\n";
}
package com.awesome.mycode.file1;

public class File1
{
    public static void main(String[] args)
    {
        MyCodeFunctions.sayYes();
    }
}
package com.awesome.mycode;

public class MyCodeFunctions
{
    public static void sayYes()
    {
        System.out.println("yes");
    }
}
该文件名为
MyCodeFunctions.java
,与上面的
mycode
文件夹相同

我的问题是:
如何编译这两个类,以便在
MyCodeFunctions.java
所在文件夹下的许多不同子文件夹中的类中重用
MyCodeFunctions.java
?我需要在
File1.java
的顶部放置哪种
import
语句?我需要将
MyCodeFunctions.java
编译成JAR文件吗?如果是,怎么做?编译
File1.java
时,我应该在命令行上运行什么来链接这个JAR文件

我知道这与PHP等语言中的
include
语句不同。这就是这个问题的全部要点。我理解这两者之间的区别,我想知道在Java范例中做这件事的等效方法是什么。我不想使用IDE来做这件事,手动操作有多复杂对我来说也无关紧要


我使用Linux来实现这一点,但我可以在Windows机器上轻松实现。

在Java中,您可以使用
import
语句:

package com.awesome.mycode.file1;

import com.awesome.mycode.MyCodeFunctions;

public class File1
{
    public static void main(String[] args)
    {
        MyCodeFunctions.sayYes();
    }
}
同一包中的类不需要导入

由于
sayYes()
是一个
static
函数,因此有一种变体允许您在不使用类限定符的情况下使用该函数:

package com.awesome.mycode.file1;

import static com.awesome.mycode.MyCodeFunctions.sayYes;

public class File1
{
    public static void main(String[] args)
    {
        sayYes();
    }
}
您可以在最后一个位置使用
*
作为通配符来导入所有类(对于
import
语句)或所有静态成员(字段和方法)&mdash(对于
import static
语句)

编辑

要编译这两个文件,源代码树应如下所示:

/com
    /awesome
        /mycode
            /file1
                File1.java
            MyCodeFunctions.java
要进行编译,请将cd刻录到包含
/com
的文件夹中,然后使用命令行:

javac com/awesome/mycode/MyCodeFunctions.java com/awesome/mycode/file1/File1.java

除了您想要的任何其他选项(控制输出等)之外,请参阅以获取更多信息。

put
import com.awesome.mycode.MyCodeFunctions是我正在做的,但它不起作用。如果这是正确的导入语句,那么我需要知道如何告诉编译器MyCodeFunctions位于与File1所在的文件夹不同的文件夹中。@MatthewG-请查看以了解如何让编译器执行您想要的操作(特别是上的小节)。我已尝试运行
javac File1.java../MyCodeFunctions.java
javac-cp。。java
javac-cp../MyCodeFunctions.java文件1.java
javac-cp../MyCodeFunctions.jar文件1.java
(将MyCodeFunctions.java编译成jar文件),以及许多其他尝试编译代码的变体,都没有成功。在您指示我访问的链接中,实际上没有任何编译命令的示例。@MatthewG-从您的示例命令来看,您似乎没有正确使用
javac
命令(首先,您在错误的目录中)。我已经编辑了我的答案,以显示一种做事方式。只需
import
也许这有帮助: