2016-03-07 4 views
1

У меня есть приложение Java, которое извлекает данные из базы данных H2. База данных и приложение установлены на одном компьютере. Теперь, когда я запускаю приложение под своим Windows 10 pc, все работает нормально, но когда я копирую приложение java на мой Raspberry Pi 2 B (Raspbian Jessie), он больше не работает. В обеих системах я установил базу данных H2, доступ к которой я могу получить через интерфейс браузера, а также java.Приложение Java с базой H2

Ошибка на Raspberry Pi является:

Feb 26, 2016 2:39:26 AM HelperPackage.DatabaseConnection startConnection 
SEVERE: null 
org.h2.jdbc.JdbcSQLException: Table "PRODUKTE" not found; SQL statement: 
SELECT Name, Datum, Anzahl, Warnzeitpunkt, ID 
FROM PRODUKTE 
ORDER BY Datum; 

Вы можете увидеть сообщение об ошибке всю here.

Похоже, что моя таблица не существует на моей малине Pi, но когда я взгляну на интерфейс браузера моей базы данных H2, таблица там.

Мое соединение создано со строками, которые вы можете увидеть в методе .getConnection (импорт из java.sql.DriverManager).

DriverManager.getConnection("jdbc:h2:~/test","sa",""); 

Как я уже сказал, приложение отлично работает на моем Windows 10 шт.

библиотеки я использую:

  • pdfbox-приложение-2.0.0-RC3 для печати
  • h2-1.4.190 для подключения к базе данных
+1

Я бы удостоверился, что две системы подключаются к одной и той же базе данных в '{user.home}' – MadProgrammer

+0

Это не та же самая база данных. Я установил одну базу данных H2 на свой компьютер Windows и один на моем малине pi. Я ничего не настраивал в одной из баз данных h2, помимо создания таблиц, поэтому все должно обеспечивать одинаковые обстоятельства. Единственная разница должна быть ОС. –

+1

Да, но '~/test' создаст базу данных в' {user.home} 'для каждой системы. При просмотре через веб-интерфейс я бы удостоверился, что вы подключаетесь к правильной базе данных для системы. – MadProgrammer

ответ

1

Soft-код явный путь

Расширение tilde (~) не совсем стандартный.

Забавный ... Я был обеспокоен этим, когда впервые увидел that example in the H2 doc. Я смутно вспоминаю, что испытывал другие ситуации, когда тильда терпела неудачу как символ «моего домашнего каталога/папки», не связанного с H2 или JDBC.

Для моей работы, из моей туманной паранойи, я использовал этот мягкий кодировкой вызов вместо тильды в моем URL H2 JDBC:

System.getProperty("user.home") 

Что-то вроде этого.

String jdbcUrl = "jdbc:h2:" + System.getProperty("user.home") + "/test" , "scott" , "tiger"); 

Смотрите Oracle Tutorial для получения дополнительной информации о System и Properties.


Эта проблема напомнила мне о подобной проблеме, когда я видел ситуации, когда localhost удалось решить из-за какое-то взаимодействие между базовыми библиотеками, заставляя явное использование 127.0.0.1.

Если у вас когда-либо было время, возможно, было бы интересно прорыть источник H2, чтобы узнать, где именно расширение тильды не удалось на Pi. Что-то о реализации Java Pi? Или библиотека в Linux Pi вызывается Java?

1

Вместо того, чтобы использовать динамический путь как ~/test Я использовал фиксированный путь, например/home/pi, чтобы решить проблему.