2016-05-19 3 views
0

Я пытаюсь соединить мою базу данных postgresql с WEKA в Eclipse.WEKA: java.lang.IllegalArgumentException: Неизвестный тип данных: int4

Когда я запустить основной я получаю это exception:

Exception in thread "main" java.lang.IllegalArgumentException: Unknown data type: int4. Add entry in weka/experiment/DatabaseUtils.props. 
If the type contains blanks, either escape them with a backslash or use underscores instead of blanks. 
  • Я скачал ВЕКА 3-6-14
  • Я расстегнул weka.jar
  • Я изменил строки в JDBC url и драйвер jdbc в файле weka/experiment/DatabaseUtils.props.postgresql
  • Я добавил типы данных, которые использую в своей базе данных
  • я переименовал файл DatabaseUtils.props.postgresql в DatabaseUtils.props

Это сегмент моего файла DatabaseUtils.props.postgresql:

# Database settings for PostgreSQL 7.4 
# 
# General information on database access can be found here: 
# http://weka.wikispaces.com/Databases 
# 
# url:  http://www.postgresql.org/ 
# jdbc: http://jdbc.postgresql.org/ 
# author: Fracpete (fracpete at waikato dot ac dot nz) 
# version: $Revision: 11887 $ 

# JDBC driver (comma-separated list) 
jdbcDriver=org.postgresql.Driver 

# database URL 
jdbcURL=jdbc:postgresql://localhost:5432/datamining 

# specific data types 
string, getString() = 0; --> nominal 
boolean, getBoolean() = 1; --> nominal 
double, getDouble() = 2; --> numeric 
# byte, getByte() = 3;  --> numeric 
# short, getByte()= 4;  --> numeric 
int, getInteger() = 5;  --> numeric 
# long, getLong() = 6;  --> numeric 
# float, getFloat() = 7;  --> numeric 
# date, getDate() = 8;  --> date 
# text, getString() = 9;  --> string 
# time, getTime() = 10;  --> date 
# timestamp, getTime() = 11; --> date 

# PostgreSQL data types to Java classes information can be found at: 
# http://www.postgresql.org/message-id/[email protected] 
text=0 
boolean=1 
double=2 
int4=5 

Это код в моем основном методе:

InstanceQuery query = new InstanceQuery(); 
    query.setUsername("username"); 
    query.setPassword("password"); 
    query.setQuery("SELECT * FROM database ORDER BY \"id\""); 
    Instances data = query.retrieveInstances(); 

Может кто-нибудь скажет мне, почему я все еще получаю исключение?

ответ

0

Я изменил свой DatabaseUtils.props код:

# Database settings for PostgreSQL 7.4 
# 
# General information on database access can be found here: 
# http://weka.wikispaces.com/Databases 
# 
# url:  http://www.postgresql.org/ 
# jdbc: http://jdbc.postgresql.org/ 
# author: Fracpete (fracpete at waikato dot ac dot nz) 
# version: $Revision: 11885 $ 

# JDBC driver (comma-separated list) 
jdbcDriver=org.postgresql.Driver 

# database URL 
jdbcURL=jdbc:postgresql://localhost:5432/datamining 

# specific data types 
# string, getString() = 0; --> nominal 
# boolean, getBoolean() = 1; --> nominal 
# double, getDouble() = 2; --> numeric 
# byte, getByte() = 3;  --> numeric 
# short, getByte()= 4;  --> numeric 
# int, getInteger() = 5;  --> numeric 
# long, getLong() = 6;  --> numeric 
# float, getFloat() = 7;  --> numeric 
# date, getDate() = 8;  --> date 
# text, getString() = 9;  --> string 
# time, getTime() = 10;  --> date 
# timestamp, getTime() = 11; --> date 

# PostgreSQL data types to Java classes information can be found at: 
# http://www.postgresql.org/message-id/[email protected] 
varchar=0 
text=0 
float4=7 
float8=2 
int4=5 
oid=5 
timestamp=8 
date=8 
bool=1 
int2=5 
int8=2 
numeric=2 
bpchar=9 

Сейчас она работает. Вы также должны проверить, соответствует ли java-версия вашего затмения той же самой, что и файл driver.jar. В противном случае вы получите это исключение:

java.lang.NoClassDefFoundError: java/time/temporal/TemporalField 
0

Попробуйте добавить геттер к int4 в DatabaseUtils.props.postgresql

+0

Я добавил строку «int4, getInteger() = 5; -> numeric», но я все еще получаю исключение. –

Смежные вопросы