gpt4 book ai didi

java - Gemfire 使用 gfsh 启动 : ClassNotFound error in gfsh start server

转载 作者:行者123 更新时间:2023-11-30 08:12:06 26 4
gpt4 key购买 nike

我有以下环境:操作系统 - Windows7

环境变量设置:

CLASSPATH = C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\gemfire.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\antlr.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\gfsh-dependencies.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\gfSecurityImpl.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\jackson-core-2.2.0.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\commons-logging-1.1.1.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\tomcat-embed-core.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\tomcat-embed-jasper.jar;C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows\lib\tomcat-embed-logging-juli.jar;%JAVA_HOME%\lib\tools.jar;C:\MyWorkspace\Repository\org\springframework\data\spring-data-gemfire\1.5.1.RELEASE\spring-data-gemfire-1.5.1.RELEASE.jar;%CLASSPATH%
GEMFIRE = C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows GF_JAVA = %JAVA_HOME%\bin\java.exe JAVA_HOME = C:\MyWorkspace\JDK8\jdk1.8.0_31 MAVEN_HOME = C:\MyWorkspace\Maven\apache-maven-3.3.1 PATH = %JAVA_HOME%\bin;%ERACOM_HOME%;%Cryptoki%;%WAS_HOME%\bin;%MAVEN_HOME%\bin;C:\Windows\System32;C:\Windows;C:\OtherProgramFiles\nodejs\;%GEMFIRE%\bin;

我的简单项目文件:缓存-xml-文件:cache.xml

<cache>
<region name="Apps">
<region-attributes>
<cache-listener>
<class-name>mypackage.listener.TestListener</class-name>
</cache-listener>
</region-attributes>
</region>
<initializer>
<class-name>org.springframework.data.gemfire.support.SpringContextBootstrappingInitializer</class-name>
<parameter name="contextConfigLocations">
<string>spring-application-context.xml</string>
</parameter>
</initializer>
</cache>

mypackage.listener.TestListener

public class TestListener implements CacheListener, Declarable {
@
Override
public void init(Properties arg0) {
System.out.println("Inside TestListener.init()");
}

... //Other Overridden methods . . .
}

spring-application-context.xml:包含单个 bean:

<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:gfe="http://www.springframework.org/schema/gemfire" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

<bean id="myTestCacheLoader" class="mypackage.loader.MyTestCacheLoader">
</bean>

</beans>

**mypackage.loader.MyTestCacheLoader:

public class MyTestCacheLoader implements
CacheLoader, Declarable {

@
Override
public void close() {

}

@
Override
public Object load(LoaderHelper arg0) throws CacheLoaderException {
System.out.println("Inside MyTestCacheLoader.load()");
return null;
}

@
Override
public void init(Properties arg0) {

}

}

步骤:1. 从目录启动 gfsh - C:\MyWorkspace\Pivotal_GemFire_800_b48398_Windows

  • 启动定位器:启动定位器 --name=locator1 --port=10334

  • 启动服务器:

  • start server --name=server1 --server-port=40411 --cache-xml-file=C:\MyWorkspace\Codebase\ContentServices\content-loaderwriter\src\test\resources\cache-loader-writer.xml --classpath=C:\MyWorkspace\Codebase\ContentServices\content-loaderwriter\target\content-loaderwriter-0.0.1-SNAPSHOT.jar

    但它抛出:java.lang.ClassNotFoundException:org.springframework.data.gemfire.support.SpringContextBootstrappingInitializer

    我什至在 CLASSPATH 变量中添加了 gemfire jar 以及上面的 spring-data-gemfire jar (来 self 的存储库)。仍然遇到异常。似乎没有解析maven依赖/类路径。

  • 如果我尝试在 gfsh 启动服务器命令的类路径中提供多个 jar:
  • start server --name=server1 --server-port=40411 --cache-xml-file="C:\MyWorkspace\Codebase\ContentServices\content-loaderwriter\src\test\resources\cache-loader-writer.xml" --classpath="C:\MyWorkspace\Repository\org\springframework\data\spring-data-gemfire\1.5.1.RELEASE\spring-data-gemfire-1.5.1.RELEASE.jar:C:\MyWorkspace\Codebase\ContentServices\content-loaderwriter\target\content-loaderwriter-0.0.1-SNAPSHOT.jar"

    我仍然收到 ClassNotFoundException。它不解析类路径中提供的 jar。

    有人可以帮忙吗?

    最佳答案

    我认为问题很简单,您在类路径中使用“:”作为分隔符。 Windows 需要一个“;”这里。在这种情况下,您不需要设置 CLASSPATH 环境变量。

    但是,您很可能需要 spring-data-gemfire 所依赖的其他 jar。看起来您正在使用 Maven,因此这里有一种简单的方法来获取所有项目依赖项(包括传递依赖项)的类路径。

    在您的项目目录中,运行“mvn -DexcludeArtifactIds=gemfire dependency:build-classpath”。这将为您提供除 gemfire(自动提供)之外的所有依赖项。将您的应用程序 jar 添加到生成的类路径中,您应该拥有所需的一切。

    此外,根据您正在做的事情,您可能会对 8.1 中添加到“gfsh start”命令中的“--spring-xml-location”选项感兴趣。这允许您完全省去“cache.xml”,并使用 spring-data-gemfire 提供的“gfe”命名空间在 spring 上下文文件中定义所有内容。

    关于java - Gemfire 使用 gfsh 启动 : ClassNotFound error in gfsh start server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246850/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com