英文:
How do you compile files with multiple dependencies (imports and .jar files)?
问题
我有以下的目录结构:
我在编译'models'包中的源文件时遇到了问题,这些文件依赖于src包中的所有其他文件,以及lib中的.jar文件。我应该如何编写类路径(在Mac上)以编译这些模型文件?
<!-- language: none -->
joseph@Josephs-MacBook-Pro models % javac -cp ".:.." NeuralNetworkMultiClass.java
../utils/Metrics.java:4: 错误: 找不到包org.knowm.xchart.style
import org.knowm.xchart.style.AxesChartStyler;
^
../utils/Metrics.java:5: 错误: 找不到包org.knowm.xchart.style
import org.knowm.xchart.style.Styler;
^
../utils/Metrics.java:6: 错误: 找不到包org.knowm.xchart.style.markers
import org.knowm.xchart.style.markers.SeriesMarkers;
^
../utils/Metrics.java:3: 错误: 找不到包org.knowm.xchart
import org.knowm.xchart.*;
^
../utils/Metrics.java:34: 错误: 找不到符号
XYChart chart = new XYChartBuilder()
^
符号: 类XYChart
位置: 类Metrics
../utils/Metrics.java:34: 错误: 找不到符号
XYChart chart = new XYChartBuilder()
^
符号: 类XYChartBuilder
位置: 类Metrics
../utils/Metrics.java:50: 错误: 找不到符号
XYSeries series = chart.addSeries(seriesName, xData, yData);
^
符号: 类XYSeries
位置: 类Metrics
../utils/Metrics.java:51: 错误: 找不到符号
series.setMarker(SeriesMarkers.NONE);
^
符号: 变量SeriesMarkers
位置: 类Metrics
../utils/Metrics.java:52: 错误: 找不到符号
new SwingWrapper<>(chart).displayChart();
^
符号: 类SwingWrapper
位置: 类Metrics
../utils/Metrics.java:69: 错误: 找不到符号
ArrayList<XYChart> charts = new ArrayList<>();
^
符号: 类XYChart
位置: 类Metrics
../utils/Metrics.java:74: 错误: 找不到符号
XYChart chart = new XYChartBuilder()
^
符号: 类XYChart
位置: 类Metrics
../utils/Metrics.java:74: 错误: 找不到符号
XYChart chart = new XYChartBuilder()
^
符号: 类XYChartBuilder
位置: 类Metrics
../utils/Metrics.java:81: 错误: 找不到符号
XYSeries costA1 = chart.addSeries("Alpha = 1", xData, ySeries[0]);
^
符号: 类XYSeries
位置: 类Metrics
../utils/Metrics.java:82: 错误: 找不到符号
XYSeries costA2 = chart.addSeries("Alpha = 0.1" , xData, ySeries[1]);
^
符号: 类XYSeries
位置: 类Metrics
../utils/Metrics.java:83: 错误: 找不到符号
XYSeries costA3 = chart.addSeries("Alpha = 0.01", xData, ySeries[2]);
^
符号: 类XYSeries
位置: 类Metrics
../utils/Metrics.java:84: 错误: 找不到符号
costA1.setMarker(SeriesMarkers.NONE);
^
符号: 变量SeriesMarkers
位置: 类Metrics
../utils/Metrics.java:85: 错误: 找不到符号
costA2.setMarker(SeriesMarkers.NONE);
^
符号: 变量SeriesMarkers
位置: 类Metrics
../utils/Metrics.java:86: 错误: 找不到符号
costA3.setMarker(SeriesMarkers.NONE);
^
符号: 变量SeriesMarkers
位置: 类Metrics
../utils/Metrics.java:90: 错误: 找不到符号
new SwingWrapper<>(charts).displayChartMatrix();
^
符号: 类SwingWrapper
位置: 类Metrics
../utils/Metrics.java:108: 错误: 找不到符号
ArrayList<XYChart> charts = new ArrayList<>();
^
符号: 类XYChart
位置: 类Metrics
../utils/Metrics.java:116: 错误: 找不到符号
XYChart chart = new XYChartBuilder()
^
符号: 类XYChart
位置: 类Metrics
../utils/Metrics.java:116: 错误: 找不到符号
XYChart chart = new XYChartBuilder()
^
符号: 类XYChartBuilder
位置: 类Metrics
../utils/Metrics.java:123: 错误: 找不到符号
XYSeries cost = chart.addSeries("training", xData, ySeries[i]);
^
符号: 类XYSeries
位置: 类Metrics
../utils/Metrics.java:124: 错误: 找不到符号
XYSeries recall = chart.addSeries("validation", xData, ySeries[i + 1]);
^
符号: 类XYSeries
位置: 类Metrics
../utils/Metrics.java:125: 错误: 找不到符号
cost.setMarker(SeriesMarkers.NONE);
^
符号: 变量SeriesMarkers
位置: 类Metrics
../utils/Metrics.java:126: 错误: 找不到符号
recall.setMarker(SeriesMarkers.NONE);
^
符号: 变量SeriesMarkers
位置: 类Metrics
../utils/Metrics.java:131: 错误: 找不到符号
new SwingWrapper<>(charts).displayChartMatrix();
^
符号:
英文:
I have the following directory structure:
I'm having trouble compiling the source files in the 'models' package, which rely on all other files in packages src as well as the .jar file in lib. How would I write the classpath command to compile these model files (on mac)?
<!-- language: none -->
joseph@Josephs-MacBook-Pro models % javac -cp ".:.." NeuralNetworkMultiClass.java
../utils/Metrics.java:4: error: package org.knowm.xchart.style does not exist
import org.knowm.xchart.style.AxesChartStyler;
^
../utils/Metrics.java:5: error: package org.knowm.xchart.style does not exist
import org.knowm.xchart.style.Styler;
^
../utils/Metrics.java:6: error: package org.knowm.xchart.style.markers does not exist
import org.knowm.xchart.style.markers.SeriesMarkers;
^
../utils/Metrics.java:3: error: package org.knowm.xchart does not exist
import org.knowm.xchart.*;
^
../utils/Metrics.java:34: error: cannot find symbol
XYChart chart = new XYChartBuilder()
^
symbol: class XYChart
location: class Metrics
../utils/Metrics.java:34: error: cannot find symbol
XYChart chart = new XYChartBuilder()
^
symbol: class XYChartBuilder
location: class Metrics
../utils/Metrics.java:50: error: cannot find symbol
XYSeries series = chart.addSeries(seriesName, xData, yData);
^
symbol: class XYSeries
location: class Metrics
../utils/Metrics.java:51: error: cannot find symbol
series.setMarker(SeriesMarkers.NONE);
^
symbol: variable SeriesMarkers
location: class Metrics
../utils/Metrics.java:52: error: cannot find symbol
new SwingWrapper<>(chart).displayChart();
^
symbol: class SwingWrapper
location: class Metrics
../utils/Metrics.java:69: error: cannot find symbol
ArrayList<XYChart> charts = new ArrayList<>();
^
symbol: class XYChart
location: class Metrics
../utils/Metrics.java:74: error: cannot find symbol
XYChart chart = new XYChartBuilder()
^
symbol: class XYChart
location: class Metrics
../utils/Metrics.java:74: error: cannot find symbol
XYChart chart = new XYChartBuilder()
^
symbol: class XYChartBuilder
location: class Metrics
../utils/Metrics.java:81: error: cannot find symbol
XYSeries costA1 = chart.addSeries("Alpha = 1", xData, ySeries[0]);
^
symbol: class XYSeries
location: class Metrics
../utils/Metrics.java:82: error: cannot find symbol
XYSeries costA2 = chart.addSeries("Alpha = 0.1" , xData, ySeries[1]);
^
symbol: class XYSeries
location: class Metrics
../utils/Metrics.java:83: error: cannot find symbol
XYSeries costA3 = chart.addSeries("Alpha = 0.01", xData, ySeries[2]);
^
symbol: class XYSeries
location: class Metrics
../utils/Metrics.java:84: error: cannot find symbol
costA1.setMarker(SeriesMarkers.NONE);
^
symbol: variable SeriesMarkers
location: class Metrics
../utils/Metrics.java:85: error: cannot find symbol
costA2.setMarker(SeriesMarkers.NONE);
^
symbol: variable SeriesMarkers
location: class Metrics
../utils/Metrics.java:86: error: cannot find symbol
costA3.setMarker(SeriesMarkers.NONE);
^
symbol: variable SeriesMarkers
location: class Metrics
../utils/Metrics.java:90: error: cannot find symbol
new SwingWrapper<>(charts).displayChartMatrix();
^
symbol: class SwingWrapper
location: class Metrics
../utils/Metrics.java:108: error: cannot find symbol
ArrayList<XYChart> charts = new ArrayList<>();
^
symbol: class XYChart
location: class Metrics
../utils/Metrics.java:116: error: cannot find symbol
XYChart chart = new XYChartBuilder()
^
symbol: class XYChart
location: class Metrics
../utils/Metrics.java:116: error: cannot find symbol
XYChart chart = new XYChartBuilder()
^
symbol: class XYChartBuilder
location: class Metrics
../utils/Metrics.java:123: error: cannot find symbol
XYSeries cost = chart.addSeries("training", xData, ySeries[i]);
^
symbol: class XYSeries
location: class Metrics
../utils/Metrics.java:124: error: cannot find symbol
XYSeries recall = chart.addSeries("validation", xData, ySeries[i + 1]);
^
symbol: class XYSeries
location: class Metrics
../utils/Metrics.java:125: error: cannot find symbol
cost.setMarker(SeriesMarkers.NONE);
^
symbol: variable SeriesMarkers
location: class Metrics
../utils/Metrics.java:126: error: cannot find symbol
recall.setMarker(SeriesMarkers.NONE);
^
symbol: variable SeriesMarkers
location: class Metrics
../utils/Metrics.java:131: error: cannot find symbol
new SwingWrapper<>(charts).displayChartMatrix();
^
symbol: class SwingWrapper
location: class Metrics
27 errors
答案1
得分: 1
你正在从 projectDir/src/models
执行该命令,但是 NeuralNetworkMultiClass.java
还依赖其他包。
你可以从 projectDir
运行 Java 编译器,并将所有编译后的类文件放在 out
文件夹中:
javac -cp "src:lib/*" -d out src/*/*.java
然后,如果你想运行 NeuralNetworkMultiClass
,可以这样在 projectDir
中执行:
java -cp "out:lib/*" models.NeuralNetworkMultiClass
在指定 -cp
标志的文件/文件夹列表时,请参考这里和这里关于平台特定内容。
英文:
You're running the command from projectDir/src/models
but NeuralNetworkMultiClass.java
depends on other packages as well.
You could run the java compiler from projectDir
and place all compiled class files inside out
:
javac -cp "src:lib/*" -d out src/*/*.java
Then if you, for example, want to run NeuralNetworkMultiClass
, you do it from projectDir
like so:
java -cp "out:lib/*" models.NeuralNetworkMultiClass
Refer to this and this on platform specifics when specifying a list of files/folders to the -cp
flag.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论