我正在尝试使用neo4J创建自己的自定义过程。我正在为windows运行neo4j安装程序(v3.2.6)。我按照这个tutorial创建了我自己的简单程序:
package example;
import java.util.List;
import org.neo4j.procedure.Description;
import org.neo4j.procedure.Name;
import org.neo4j.procedure.UserFunction;
public class ConvertDirection{
@UserFunction
@Description("example.convertDirection('v') - returns full direction name VERTICAL.")
public String convertDirection(
@Name("string") String string) {
if (string.equals(null)) {
return null;
}
if(string.equalsIgnoreCase("v")){
return "VERTICAL";
} else if (string.equalsIgnoreCase("h")){
return "HORIZONTAL";
} else {
return "BOTH";
}
}
}
我创建了自己的测试类并生成了运行mvn clean包的jar。
之后,我将procedure-template-1.0.0-SNAPSHOT放在我的两个插件文件夹中(C:\ Users \ var \ lib \ neo4j \ data \ databases \ graph.db \ plugins和C:\ Program Files \ Neo4j CE) 3.1.1 \插件)。
然后我按照建议的here更改了我的neo4j.conf以包含插件路径。我试过两种方式指向程序文件/插件和graph.db / plugins:
dbms.directories.plugins = c:/Users/var/lib/neo4j/data/databases/graph.db/plugins dbms.directories.plugins = c:/ Program \ Files / Neo4j \ CE \ 3.1.1 / plugins
重新启动服务器后,我仍然遇到此错误,我的程序未列出。
没有为此数据库实例注册名称为
example.convertDirection
的过程。请确保您已正确拼写过程名称并正确部署过程。
有谁知道这可能是什么?
您创建了一个函数,而不是一个过程(请参阅代码中的@UserFunction
)。
您应该看到它在call dbms.functions()
中列出,并且作为函数,不需要CALL和YIELD,只需像任何其他函数一样使用它内联。