Java错误:错误的源文件:文件不包含类

Java错误:错误的源文件:文件不包含类,java,Java,QueryFeatureExtract.java的目录如下 gen-java/ └── query_feature └── QueryFeatureExtract.java 使用QueryFeatureExtract的java文件ThriftClient.java与gen java位于同一文件夹中,我想用 javac -classpath libthrift-0.9.1.jar:slf4j.jar -sourcepath gen-java/query_feature/ ThriftCl

QueryFeatureExtract.java
的目录如下

gen-java/
└── query_feature
    └── QueryFeatureExtract.java
使用
QueryFeatureExtract
的java文件
ThriftClient.java
gen java
位于同一文件夹中,我想用

javac -classpath libthrift-0.9.1.jar:slf4j.jar -sourcepath gen-java/query_feature/ ThriftClient.java
然后错误显示出来

ThriftClient.java:16: error: cannot access QueryFeatureExtract
            QueryFeatureExtract.Client client = new QueryFeatureExtract.Client(protocol);
            ^
  bad source file: gen-java/query_feature/QueryFeatureExtract.java
    file does not contain class QueryFeatureExtract
    Please remove or make sure it appears in the correct subdirectory of the sourcepath.
1 error
看看这个,你只是在编译ThriftClient,试试这个:

javac -classpath libthrift-0.9.1.jar:slf4j.jar -sourcepath gen-java/query_feature/ *.java

假设您的文件如下所示:

./
└── ThriftClient.java
└── gen-java/
|   └── query_feature/
|       └── QueryFeatureExtract.java
└── libthrift-0.9.1.jar
└── slf4j.jar
QueryFeatureExtract
以以下包声明开始:

package query_feature;
您应该使用以下命令编译
ThriftClient.java

javac -classpath .:libthrift-0.9.1.jar:slf4j.jar:gen-java ThriftClient.java
您可以使用
-classpath
指定文件夹,而不需要使用
-sourcepath
。如果当前文件夹中有其他java文件,请不要忘记将
添加到类路径中。为了避免错误,因为您有一个包含其他源路径的源路径,我建议将
ThriftClient.java
移动到名为
src
的文件夹中

如果不起作用,请检查
ThriftClient
是否正在使用正确的导入导入
QueryFeatureExtract

import query_feature.QueryFeatureExtract;

@danche注意到了屏幕上的星星(*.java)end@danche我以为你的问题是QueryFeatureExtract.java?你不想也编译这个类吗?是的,但编译后还是一样的…当我把ThriftClient.java放在gen java/query_功能下时,它会导致包QueryFeatureExtract不存在错误。。非常困惑…@danche my bad我以为Thrift和Query类在同一个包中QueryFeatureExtract的包声明是什么?您不应该使用-sourcepath gen java/而不是gen java/query_feature/?@Raphaël使用此选项,它将显示错误包QueryFeatureExtract不存在。。QueryFeatureExtract的包声明是“包查询功能”;谢谢!它起作用了!但另一个错误是“错误:发生了JNI错误,请检查您的安装并重试”。这与类QueRealSudioExtudio?JNI相关,意味着java代码正在调用C或C++库。库可能已崩溃,或者在启动应用程序时出现路径问题。因为我现在不知道哪个文件正在使用JNI,所以我无法告诉您它是否与QueryFeatureExtract相关。