对于我的硕士论文,我必须修改Cassandra的源代码。所以,正如https://wiki.apache.org/cassandra/HowToBuild所建议的,我git clone,然后运行ant,一切看起来都很好(我设法构建项目没有任何错误),但是当我运行unitTests(cassandra / test)时,我有这个奇怪的错误:
org.apache.cassandra.exceptions.ConfigurationException:
Expecting URI in variable: [cassandra.config].
Found[cassandra.yaml].
Please prefix the file with [file:\\\] for local files and
[file:\\<server>\] for remote files.
If you are executing this from an external tool, it needs
to set Config.setClientMode(true) to avoid loading configuration.
at org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL(YamlConfigurationLoader.java:80)
at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:100)
at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:252)
at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:131)
at org.apache.cassandra.auth.jmx.AuthorizationProxyTest.setup(AuthorizationProxyTest.java:48)"
我想用unitTests测试我对源代码的修改(因为我没有找到任何关于如何从Windows上的源代码设置cassandra的教程,所以如果你有一个,我希望有链接^^)但我没有设法找到任何解决这个错误:(。任何人都知道这个问题的解决方案?
我正在使用IntelliJ在Windows 10上工作,我已将我的Jdk和ant更新到最新版本。
答案 0 :(得分:0)
我遇到了同样的问题。那些变量(“cassandra.config”,“cassandra.storagedir”等等)是 系统变量 。
您可以通过执行以下操作在代码中设置它们:
System.setProperty("cassandra.config", "file:///<PATH>/cassandra.yaml");
您还可以在运行jar文件时设置它们:
java -Dcassandra.config=file:///<PATH>/cassandra.yaml -jar <JAR>
最佳,
沙比尔
答案 1 :(得分:0)
在jdk 1.8中启动一个新进程,并在其中启动嵌入式cassandra。并在Java版本中运行junit。我遇到了类似的问题,jdk11进行了升级。现在我解决了这个问题。
import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
导入org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EmbeddedCassandraApplication {
public static void main(String[] args) throws Exception {
EmbeddedCassandraServerHelper.startEmbeddedCassandra("cassandra-test.yaml");
}
}