我正在尝试创建一个API,该API触发后会向Dialogflow发送一个请求。 为此,我使用的是here中的Java SDK。
有问题的代码段从here复制粘贴到页面底部。
try (SessionsClient sessionsClient = SessionsClient.create()) {
SessionName session = SessionName.of(genericProjectId, genericSessionId);
QueryInput queryInput = QueryInput.newBuilder().build();
DetectIntentResponse response = sessionsClient.detectIntent(session,
queryInput);
}
当我运行“ SessionsClient.create()”时,出现错误
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
在运行时抛出。经过研究,看来这与所包含的库的不同版本mainly protobuf and guava有关。但是,我尽可能地减小了POM,但它并没有消失。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>MYPROJECTNAME</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-dialogflow</artifactId>
<version>0.71.0-alpha</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>MYPROJECTNAME</finalName>
<plugins>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<projectId>MYPROJECTID</projectId>
</properties>
</project>
运行mvn depenceny:tree不会显示任何问题,并且通过打开创建的WAR存档,我看不到任何重复的库。尝试使用NetBeans和命令行进行编译,问题仍然存在。该应用程序在Windows上运行,使用Java 8和Payara作为服务器。我在做什么错了?
感谢您的帮助
答案 0 :(得分:1)
我遇到了同样的问题,并将其添加到我的pom.xml中,并修复了错误:
class Checkbox extends React.Component {
constructor(props) {
super(props);
this.state = {
checked: true,
};
this.onChange = this.onChange.bind();
}
onChange = () => {
this.setState({
checked: !this.state.checked
});
console.log(this.state.checked)
}
render() {
return ( <
div className = {
`checkbox ${this.props.color}`
}
onClick = {
this.onChange
} >
<
div > {
this.state.checked &&
<
span className = "checkbox-box-mark" >
<
svg viewBox = "0 0 64 64"
xmlns = "http://www.w3.org/2000/svg" > < path d = "M21.33,57.82,0,36.53l5.87-5.87L21.33,46.09,58.13,9.36,64,15.23,21.33,57.82" / > < /svg> <
/span>
} <
/div> <
div className = "checkbox-label" > checkbox < /div> <
/div>
)
}
}
export default Checkbox
答案 1 :(得分:0)
在Google Cloud存储库上提出问题之后,看起来确实是a problem with Guava,所以这是他们的错误。我仍然不确定这会如何被忽略,因为某种程度上他们的快速入门指南一定在某个时候起作用了,但是确实如此。感谢那些烦恼反对这个问题的人。
答案 2 :(得分:0)
除了从这里添加 Guava 的依赖项:
https://mvnrepository.com/artifact/com.google.guava/guava
确保它在 pom.xml 文件中高于其他文件,这对我来说很重要。 我假设如果首先加载其他 Guava 版本作为依赖项,则使用这些版本。 我没有在输出中找到:
mvn dependency:tree