Java 代码可以在 Windows 中运行,但不能在 Linux(Fedora 或 Ubuntu)中运行

发布时间:2021-03-08 15:21

所以我有这个用于学习目的的小型 Java 项目,我正在学习如何从其他 Java 文件调用函数并通过导入引用它们。在 Windows 中一切正常,我对此很满意,但我只是尝试使用 Fedora 和 Ubuntu 在同一个项目中工作,但似乎导入和包引用不起作用。

我在尝试编译主 Java 文件时遇到了这个问题:

$ javac Ejercicio01.java 
Ejercicio01.java:3: error: package actividad05.introduceDatos does not exist
import static actividad05.introduceDatos.Pregunta.*;
                                        ^
Ejercicio01.java:4: error: package actividad05.operaciones does not exist
import static actividad05.operaciones.Valores.*;
                                     ^
Ejercicio01.java:5: error: package actividad05.operaciones.algebraicas does not exist
import static actividad05.operaciones.algebraicas.Operaciones.*;
                                                 ^
Ejercicio01.java:6: error: package actividad05.operaciones.geometricas does not exist
import static actividad05.operaciones.geometricas.Operaciones.*;
                                                 ^
Ejercicio01.java:13: error: cannot find symbol
            opcion = pideEntero("\nElija una opcion:"
                     ^
  symbol:   method pideEntero(String)
  location: class Ejercicio01
Ejercicio01.java:25: error: cannot find symbol
                        muestraPi();
                        ^
  symbol:   method muestraPi()
  location: class Ejercicio01
Ejercicio01.java:28: error: cannot find symbol
                        muestraValorAleatorio();
                        ^
  symbol:   method muestraValorAleatorio()
  location: class Ejercicio01
Ejercicio01.java:31: error: cannot find symbol
                        double num = pideDouble("Introduzca un valor: ");
                                     ^
  symbol:   method pideDouble(String)
  location: class Ejercicio01
Ejercicio01.java:32: error: cannot find symbol
                        muestraSeno(num);
                        ^
  symbol:   method muestraSeno(double)
  location: class Ejercicio01
Ejercicio01.java:35: error: cannot find symbol
                        num = pideDouble("Introduzca un valor: ");
                              ^
  symbol:   method pideDouble(String)
  location: class Ejercicio01
Ejercicio01.java:36: error: cannot find symbol
                        muestraCoseno(num);
                        ^
  symbol:   method muestraCoseno(double)
  location: class Ejercicio01
Ejercicio01.java:39: error: cannot find symbol
                        muestraRaizCuadrada();
                        ^
  symbol:   method muestraRaizCuadrada()
  location: class Ejercicio01
Ejercicio01.java:42: error: cannot find symbol
                        double base = pideDouble("Introduzca base: ");
                                      ^
  symbol:   method pideDouble(String)
  location: class Ejercicio01
Ejercicio01.java:43: error: cannot find symbol
                        double exp = pideDouble("Introduzca exponente: ");
                                     ^
  symbol:   method pideDouble(String)
  location: class Ejercicio01
Ejercicio01.java:44: error: cannot find symbol
                        calculaPotencia(base, exp);
                        ^
  symbol:   method calculaPotencia(double,double)
  location: class Ejercicio01
15 errors

我的主 Java 文件引用了其他函数,如下所示:

package actividad05.main;

import static actividad05.introduceDatos.Pregunta.*;
import static actividad05.operaciones.Valores.*;
import static actividad05.operaciones.algebraicas.Operaciones.*;
import static actividad05.operaciones.geometricas.Operaciones.*;

public class Ejercicio01 {

意思是Ejercicio01.java在src/actividad05/main文件夹下,导入的函数在src/actividad05/introduceDatos/Pregunta.java etc等

回答1

我的第一个想法是这可能是一个类路径问题。检查您的源代码在哪里(.java 文件)以及将它们编译到哪里(.class 文件)。然后检查你是如何尝试运行应用程序的,是所有 .class 文件在类路径上的位置吗?在这种情况下,它与操作系统差异无关,而是与编译和执行命令以及文件位置有关。

在另一个操作系统上运行编译代码时有时会出现的问题是 JDK 或 JRE 具有不同的供应商或版本。您使用的是 Oracle 还是 OpenJDK?哪个版本?如果版本不同,甚至编译可能会因为某些 Java 特性不同而遇到麻烦。

但是上面的输出指向了第一个问题的方向。

编辑:找不到包的问题可能意味着您在与包名称匹配的目录下没有 .java 文件,或者您没有在根包(源目录)上调用编译器.

退房:https://www.webucator.com/how-to/how-compile-packages-java.cfm