当试图用另一个目录中的另一个类编译java文件时,权限被拒绝

bfhwhh0e  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(156)

对于上下文,有2个java包文件,Poligon.java和PersegiPanjang.java。我试图编译我的第二个包,但它说权限被拒绝。我已经检查了目录权限,它允许所有权限,但当我试图编译包时仍然被拒绝。

mylaptop@MacBook-Pro pert 3 % javac org/poligon/Poligon.java                             
mylaptop@MacBook-Pro pert 3 % javac -cp org/poligon;. org/bangundatar/PersegiPanjang.java
error: no source files
org/bangundatar/PersegiPanjang.java:1: permission denied: /Applications
org/bangundatar/PersegiPanjang.java:2: command not found: 3-inheritance.pdf
org/bangundatar/PersegiPanjang.java:3: command not found: 3-inheritance.pdf
org/bangundatar/PersegiPanjang.java:4: command not found: 3-inheritance.pdf
org/bangundatar/PersegiPanjang.java:5: permission denied: org/
org/bangundatar/PersegiPanjang.java:7: command not found: package
org/bangundatar/PersegiPanjang.java:9: command not found: import
org/bangundatar/PersegiPanjang.java:11: command not found: public
org/bangundatar/PersegiPanjang.java:private:12: not valid in this context: panjang,lebar
double=''

Poligon.java位于“/Users/username/Desktop/Matkul/smt 4/pbo/prak/pert 3/org/poligon”。
PersegiPanjang.java位于“/Users/username/Desktop/Matkul/smt 4/pbo/prak/pert 3/org/bangundatar”。
Poligon.java

package org.poligon;

public class Poligon{
    protected int jumlahSisi;

    public int getJumlahSisi(){
        return this.jumlahSisi;
    }
}

PersegiPanjang.java

package org.bangundatar;

import org.poligon.Poligon;

public class PersegiPanjang extends Poligon{
    private double panjang,lebar;

    public PersegiPanjang(double panjang, double lebar, int jumlahSisi){
        this.panjang = panjang;
        this.lebar = lebar;
        this.jumlahSisi = jumlahSisi;
    }

    public double hitungLuas(){
        return panjang * lebar;
    }

    public void printInfo(){
        System.out.println("Bangun Persegi Panjang bersisi         "+this.getJumlahSisi());
    }
}

我希望它能成功编译,没有任何被拒绝的权限。This is the file permission access information

xuo3flqw

xuo3flqw1#

你用错了指南你正在使用一个用于windows,这意味着你现在使用了错误的java路径分隔符,这意味着这个命令被不同地解析。
javac -cp org/poligon;. org/bangundatar/PersegiPanjang.java

在windows操作系统上:是驱动器号的分隔符,不能用来分隔路径,所以在windows上,使用;。但在几乎所有命令行shell中(除了windows的);是命令分隔符.所以,:被使用.上面,当你输入到一个终端,意味着bash看到了它,然后说:

好吧,你想让我先跑:

javac -cp org/poligon

然后你想让我跑

. org/bangundatar/PersegiPanjang.java

而这正是你的输出所说的情况。第一行产生错误'no source files'。
第二行需要更多的解释:几乎所有的shell应用程序(就是你输入这些命令的应用程序,黑框中有白色文本的那个)都有一个source命令,它可以读取你提供的任何文件,并像shell脚本一样执行它:只需运行该文本文件中的每个命令,就像您自己在命令行上直接键入一样。
因此,. org/bangundatar/PersegiPanjang.java的操作等同于打开java文件,选择所有文件,将其复制到剪贴板,进入终端,然后全部粘贴,这会导致一系列错误,因为java显然不是命令行语言。
修复方法?只需将;替换为:。更一般的,您应该始终将java路径参数放在单引号中,因为如果您的shell转义或以其他方式处理它,它将永远不会按照您的要求执行。javac -cp 'org/poligon:.' org/bangundatar/*.java是您想要键入的命令。

相关问题