java - Java 代码在 Windows 中有效,但在 Linux(Fedora 或 Ubuntu)中无效
问题描述
所以我有这个小型 Java 项目用于学习目的,我正在学习如何从其他 java 文件中调用函数并通过 import 引用它们。一切都在 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 等。
解决方案
我的第一个想法是,这可能是一个类路径问题。检查您的源代码在哪里(.java 文件)以及将它们编译到哪里(.class 文件)。然后检查您是如何尝试运行应用程序的,是类路径上所有 .class 文件的位置吗?在这种情况下,它与操作系统差异无关,而是与编译和执行命令以及文件位置有关。
在另一个操作系统上运行编译代码时有时会出现的问题是 JDK 或 JRE 具有不同的供应商或版本。您使用的是 Oracle 还是 OpenJDK?哪个版本?如果版本不同,甚至编译也可能会遇到麻烦,因为某些 Java 特性不同。
但上述输出指向第一个问题的方向。
编辑:找不到包的问题可能意味着您在与包名称匹配的目录下没有 .java 文件,或者您没有在根包(源目录)上调用编译器。
查看:https ://www.webucator.com/how-to/how-compile-packages-java.cfm
推荐阅读
- c# - 如何在 .NET 标准库(需要 DirectoryInfo)中使用 UWP 的 StorageFolder
- rest - Tomcat 启动时 Jersey REST API 出错
- javascript - 为什么 chrome.notifications.onButtonClicked.addListener 函数运行多次?
- angular - 自动完成组件中的 2 路数据绑定
- javascript - 通过文本文件在标签中输入值并在循环中创建节点 - 表单制作器
- python - 循环以一次添加一行到列表
- c# - 由于超时期限已过,此操作返回。(来自 HRESULT 的异常:0x800705B4)
- selenium - Webdriver 获取子列表并使用 xpath 过滤它
- android - 添加到收藏夹到新活动
- excel - 以 0.25 步长值循环