首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在将Postgres连接到Ballerina,找不到bre/lib文件夹

正在将Postgres连接到Ballerina,找不到bre/lib文件夹
EN

Stack Overflow用户
提问于 2020-07-27 21:19:21
回答 1查看 118关注 0票数 0

芭蕾舞版

代码语言:javascript
复制
jBallerina 1.2.6
Language specification 2020R1
Update Tool 0.8.8

我已经安装了Ballerina,一切都运行得很好,但现在我正试图在postgres上使用我的本地安装,但我无法让它正常工作。

在阅读文档时,它说要将postgres JDBC驱动程序复制到控制器BALLERINA_HOME/bre/lib。不存在这样的目录。

所以首先我做了一个“哪个芭蕾舞演员”来找到它指向/usr/bin/ballerina

当我来到这里时,它只是一个指向ballerina可执行文件的链接,而不是一个目录,该可执行文件位于/usr/lib/ballerina/bin中

因此,我将驱动程序复制到usr/lib/ballerina/lib,希望它能工作,但它没有。

然后,我了解了如何在Ballerina.toml中创建和配置项目(使用命令行生成项目和模块)

下面是我的TOML文件

代码语言:javascript
复制
[project]
org-name= "alexmerced"
version= "0.1.0"

[platform]
target = "java8"

    [[platform.libraries]]
    artafactId = "postgresql"
    version = "42.2.14"
    path = "/usr/lib/ballerina/bre/lib/postgresql-42.2.14.jar"
    groupId = "org.postgresql"
    modules = ["samplemodule"]

[dependencies]

当我运行模块(不是构建,运行)时,我仍然得到相同的缺少驱动程序的错误。

我尝试在/user/lib/ballerina中创建bre/lib控制器,但似乎也不起作用。

我得到的错误如下:

代码语言:javascript
复制
WARNING: Incompatible JRE version '11.0.7' found. This ballerina program supports running on JRE version '1.8.*'
error: {ballerinax/java.jdbc}ApplicationError message=error in sql connector configuration: Failed to get driver instance for jdbcUrl=jdbc:postgresql://localhost:5432/test?useSSL=false:No suitable driver
        at ballerinax.java_jdbc:createClient(client.bal:137)
           ballerinax.java_jdbc.Client:__init(client.bal:27)
           ballerinax.java_jdbc.Client:$__init$(client.bal:21)

下面是我正在尝试运行的模块代码

代码语言:javascript
复制
import ballerina/io;
// import ballerina/jsonutils;
import ballerina/time;
import ballerinax/java.jdbc;

jdbc:Client testDB = new ({
    url: "jdbc:postgresql://localhost:5432/test?useSSL=false",
    username: "test",
    password: "test",
    dbOptions: {useSSL: false}
});

type Bird record {
    int id;
    int age;
    string name;
    time:Time insertedTime;
};


public function main() {

 //RENAME PRINT   
 var print = io:println;

 var ret = testDB->update("CREATE TABLE bird(id INT AUTO_INCREMENT, " +
        "age INT, name VARCHAR(255), insertedTime TIMESTAMP DEFAULT " +
        "CURRENT_TIMESTAMP, PRIMARY KEY (id))");
    handleUpdate(ret, "Create student table");


}

function handleUpdate(jdbc:UpdateResult|jdbc:Error returned, string message) {
    if (returned is jdbc:UpdateResult) {
        io:println(message, " status: ", returned.updatedRowCount);
    } else {
        io:println(message, " failed: ", <string>returned.detail()?.message);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-27 22:03:26

不需要将Postgresql jar复制到Ballerina安装位置。jar只需要在构建过程中能够被编译器访问。当你得到Incompatible JRE version '11.0.7' found.警告的时候,你也可能在那里搞乱了一些东西。Ballerina附带了正确的Java版本:

代码语言:javascript
复制
$ ballerina home
/usr/lib/ballerina/distributions/jballerina-1.2.2
$ ls -d /usr/lib/ballerina/dependencies/jdk8u202-b08-jre/
/usr/lib/ballerina/dependencies/jdk8u202-b08-jre/
$ /usr/lib/ballerina/dependencies/jdk8u202-b08-jre/bin/java -version
openjdk version "1.8.0_202"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.202-b08, mixed mode)

这是一个来自工作芭蕾舞1.2.2 + Postgresql项目的Ballerina.toml文件:

代码语言:javascript
复制
[project]
org-name= "test"
version= "0.1.0"

[dependencies]

[platform]
target = "java8"
    [[platform.libraries]]
    module = "main"
    path = "../lib/postgresql-42.2.10.jar"
    groupId = "org.postgresql"
    artafactId = "postgresql"
    version = "42.2.10"

请注意,postgresql-42.2.10.jar的路径是相对于Ballerina.toml的位置的,并且这两个文件都受版本控制。

还要确保您正确地提到了所有使用Postgresql jar的Ballerina模块。在本例中,我只有一个名为main的模块。

main-module中的数据库设置代码与您的示例相同:

代码语言:javascript
复制
import ballerinax/java.jdbc;

jdbc:Client db = new ({
    url: "jdbc:postgresql://localhost:5432/testdb",
    username: "testdb",
    password: "testdb"
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63116220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档