我在Heroku上使用Java和MongoDB構建Web應用程序。我從here瞭解到這個項目。我一直在嘗試兩天。在Heroku上無法使用Java驅動程序與MongoDB連接
我用3.2.2 mongo-java-driver
和3.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_URL
mongodb://user:[email protected]: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)
從original version以我目前的版本,我真的努力了很多,我只是想使其可以運行在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));
請幫我解決這個問題開了一個問題。提前致謝。
你能通過命令行連接到你的mongo數據庫嗎? – vincent
@vincent是的,我可以通過命令行連接到mongolab,我可以通過命令行創建用戶並創建集合。 –