无法使用Heroku上的Java驱动程序与MongoDB连接

ZW

我正在Heroku上使用Java和MongoDB构建Web应用程序。我从这里学到了这个项目我一直努力尝试了两天。

我用3.2.2 mongo-java-driver3.5.1 maven-compiler-plugin

这是在我的Main课上:

public static void main(String[] args) throws MongoException, UnknownHostException, Exception {
    MongoClientURI uri = new MongoClientURI(System.getenv("MONGOHQ_URL"));
    MongoClient mongoClient = new MongoClient(uri);

    String dbname = uri.getDatabase();

    //mongoClient.setWriteConcern(WriteConcern.JOURNALED);
    DB db = mongoClient.getDB(dbname);

    staticFileLocation("/public");
    new TodoResource(new TodoService(db));

    MongoCredential credential = MongoCredential.createCredential(uri.getUsername(),dbname,uri.getPassword());
    MongoClientOptions mongoClientOptions = MongoClientOptions.builder().build();
}

我得到了这个错误:

1:38:42 AM web.1 | Exception in thread "main"
1:38:42 AM web.1 | java.lang.NullPointerException
1:38:42 AM web.1 | at com.mongodb.MongoClientURI.<init>   (MongoClientURI.java:174…
1:38:42 AM web.1 | at com.mongodb.MongoClientURI.<init> (MongoClientURI.java:159…
1:38:42 AM web.1 | at Main.main(Main.java:32)

这是空指针异常,所以我试图取代MONGOHQ_URLmongodb://user:passwd@host1:port1,host2:port2/dbname,而且我还试图用MLAB的MongoDB在Heroku上,但同样的错误:

11:17:05 AM web.1 |  SLF4J: Class path contains multiple SLF4J bindings.
11:17:05 AM web.1 |  SLF4J: Found binding in [jar:file:/Users/zhugejunwei/full-sta…
11:17:05 AM web.1 |  SLF4J: Found binding in [jar:file:/Users/zhugejunwei/full-sta…
11:17:05 AM web.1 |  SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings …
11:17:05 AM web.1 |  SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerF…
11:17:05 AM web.1 |  Exception in thread "main" java.lang.NullPointerException
11:17:05 AM web.1 |     at com.mongodb.ConnectionString.<init>(ConnectionString.java…
11:17:05 AM web.1 |     at com.mongodb.MongoClientURI.<init>(MongoClientURI.java:176…
11:17:05 AM web.1 |     at com.mongodb.MongoClientURI.<init>(MongoClientURI.java:158…
11:17:05 AM web.1 |     at Main.main(Main.java:28)

原始版本到当前版本,我确实做了很多尝试,但我只想使其在Heroku上可运行,以另一种方式学习该项目。

当我学习了另一个教程时,下面的代码还可以,但是我不知道为什么它在该项目中不起作用。

MongoURI mongoURI = new MongoURI(System.getenv("MONGOHQ_URL"));
//get connected
DB db = mongoURI.connectDB();
mongoURI.getPassword());
MongoCredential credential = MongoCredential.createCredential(mongoURI.getUsername(), mongoURI.getDatabase(), mongoURI.getPassword());
MongoClient mongoClient = new MongoClient(new ServerAddress(), Arrays.asList(credential));

我还在githubjira上打开了一个问题

请帮我解决这个问题。提前致谢。

ZW

我尝试了40多个小时,终于成功了。

我改变了很多。我认为这很重要:

首先,似乎我无法使用DB db = mongoURI.connectDB();,可能是由于3.2.2 java驱动程序版本Heroku上的MongoDB版本所致。当我使用“ MongoDatabase”代替“ DB”时,一些错误消失了,但仍然无法运行该项目。因为我已经改变了很多在我的项目的地方使用“DB”,这是非常困难的,从改变DBMongoDatabase

我意识到可以DB2.7.2中使用,因此我更改了与mongo-java-driver版本有关的所有语法但是同样,错误消失了,我无法运行该项目。但是,这时似乎大多数错误都消失了。另一个错误表明另一个进程正在同一端口上运行。我杀死了那个过程。现在所有错误都消失了。当我运行它时,我无法在Heroku上打开它,而是在端口4567上打开它。这很奇怪,因为Heroku的默认端口是5000,Jetty是Java应用程序的嵌入式服务器,默认端口是4567。我添加了这段代码,终于奏效了。

port(Integer.valueOf(System.getenv("PORT")));

感谢我的教授,也感谢所有帮助我的人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用 Scala 驱动程序连接到 MongoDB Atlas

如何防止连接池在mongodb上使用Java驱动程序关闭?

MongoDB:使用Java驱动程序拉

无法从mongodb Java驱动程序连接到MLab Mongo数据库

mongodb 服务器上的 SSLHandshakeFailed 尝试通过 java 驱动程序连接时

java.lang.NoClassDefFoundError:com / mongodb / XXXXXX无法修复!(使用:MongoDB Java驱动程序,Spigot)

MongoDB PHP驱动程序无法在Ubuntu AWS上运行

使用MongoDB的Java驱动程序无法初始化类com.mongodb.connection.MongoQueryAnalyzer

无法使用 PostgreSQL JDBC 驱动程序通过 SSL 连接

无法使用jdbc驱动程序连接到mysql

无法使用 Cassandra Datastax Java 驱动程序连接到 Cassandra 节点之一

使用mongodb java驱动程序运行本机mongodb查询

无法使用php驱动程序删除mongodb中的文档

无法使用 NodeJS MongoDB 驱动程序更新文档

MongoDb无法在分片环境中使用Java驱动程序插入文档

MongoDB Go驱动程序重置连接

使用Java驱动程序方法在MongoDB子文档上检索ObjectID

Java 8上的SQL Server JDBC错误:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL Server的安全连接

MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序

无法通过Docker驱动程序在Minikube上使用GPU

在Windows 10上无法使用Android USB驱动程序

无法在Arch Linux上使用Broadcom无线驱动程序

使用Java驱动程序3.8的ColdFusion和MongoDB 4

使用Java MongoDb驱动程序进行Bson漂亮打印

MongoDB使用Java驱动程序版本3.0更新

使用MongoDB Java 3.0驱动程序进行批量上传

如何使用Java驱动程序为MongoDB构建$ or查询?

尝试使用MongoDB Java驱动程序更新文档

使用Java驱动程序进行MongoDB聚合