我正在尝试构建一个通过生菜与Redis通信的Denodo Java存储过程。
我正在使用Denodo推荐的Denodo 4e eclipse 扩展液和氧气。
我显然缺少了一些东西,因为所有文档都表明
int port = 6379;
String host = "127.0.0.1";
RedisURi uri = RedisURI.Builder.redis(host,port).withDatabase(1).build();
RedisClient client = RedisClient.create(uri);
和
RedisClient client = RedisClient.create("redis://localhost:6379");
我所抛出的错误是调试方法所掩盖的,我所知道的是,在第一种情况下,构建器会失败,而在第二种情况下,客户端会失败。
当我调用redis-cli时,我看到redis在127.0.0.1:6379>上运行,并且能够获取我设置的测试密钥。
user@system:~$ redis-cli
127.0.0.1:6379> get datum1
"datum2"
我正在使用默认的redis.conf并在同一台计算机上运行eclipse,denodo和redis。
在redis.conf中绑定(bind)的是127.0.0.1::1
超时已禁用(0)
我通常不是用Java开发的,所以我希望我显然做错了什么,而不是必须在非denodo项目中实际执行此操作并整理出正确的构建和调试信息。
最佳答案
所以对于Java或Denodo的新手来说,这里有一些菜鸟错误。
Java错误是使用catch异常,该异常显然不能捕获所有内容。转向catch throwable使我可以获得有用的堆栈跟踪,尽管我知道不建议在调试之外进行此操作,因为catch throwable还会捕获潜在的JVM错误以及您无需处理代码的事务。
根本问题是依赖项的Java.Lang.ClassNotFoundException。
Denodo的错误是Denodo中的Java存储过程要么需要导入依赖项jar,要么应该使用uber(?)/ fat(?)jar。
我使用maven程序集插件而不是使用denodo4e部署工具来构建maven,然后将jar复制到denodo home下的procs文件夹中,并在VDP Admin中创建新存储过程时浏览到该文件夹。