本文参考了
win7 安装Opentaps 1.5windows下 opentaps1.4安装
ofbiz ORA-01843: 无效的月份错误 ORA-01843: not a valid month while using oracle database
1.首先下载opentaps1.5的压缩包
解压到c:\根目录
2.修改framework\entity\config\entityengine.xml里面的
<delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false">
<group-map group-name="org.ofbiz" datasource-name="localderby"/>的localderby修改为localoracle
3.然后修改<datasource name="localoracle"下面的参数
jdbc-uri="jdbc:oracle:thin:@192.168.101.195:1521:orcltest" 192.168.101.195为oracle10g所在设备ip,orcltest为该oracle的数据库名或者sid
4.此时用system连接到oracle,执行下列语句
建立oracle表空间
create tablespace ofbiz datafile ' D:\oracle\product\10.2.0\oradata\ofbiz\ofbiz.dbf' size 2m autoextend on next 2m maxsize unlimited;
建立用户
create user ofbiz identified by ofbiz default tablespace ofbiz;
赋权限
grant connect,resource to ofbiz;
5.下载对应的oraclejdbc驱动放到framework/entity/lib/jdbc,这里我下载的是10.2.0.1.0的jdk1.5/jdk1.4的ojdbc14.jar
6.如果内存不够小于4G,会提示无法启动jvm,可以修改startofbiz.bat里面的最后启动的参数里面的内存统统调小一半或者1/4,如下
"%JAVA_HOME%\bin\java" -Xms512M -Xmx1024M -XX:MaxPermSize=512M -jar ofbiz.jar > runtime\logs\console.log
7.为了应对启动startofbiz.bat之后,不停报not a invalid month的错,需要修改/framework/entity/src/org/ofbiz/entity/jdbc/SqlJdbcUtil.java先在最前面的import的地方,添加一行import java.sql.Timestamp;然后再将
public static void addValueSingle(StringBuilder buffer, ModelField field, Object value, List<EntityConditionParam> params) { if (field != null) { buffer.append('?'); } else if(value instanceof Timestamp){ buffer.append("to_timestamp('"); buffer.append(value); buffer.append("','yyyy-MM-dd HH24:mi:ssxff')"); } else { buffer.append('/''); if (value instanceof String) { buffer.append(((String) value).replaceAll("'", "''")); } else { buffer.append(value); } buffer.append('/''); } if (field != null && params != null) params.add(new EntityConditionParam(field, value)); }
修改为:
public static void addValueSingle(StringBuilder buffer, ModelField field, Object value, List<EntityConditionParam> params) { if (field != null) { buffer.append('?'); } else if(value instanceof Timestamp){ buffer.append("to_timestamp('"); buffer.append(value); buffer.append("','yyyy-MM-dd HH24:mi:ssxff')"); } else { buffer.append('/''); if (value instanceof String) { buffer.append(((String) value).replaceAll("'", "''")); } else { buffer.append(value); } buffer.append('/''); } if (field != null && params != null) params.add(new EntityConditionParam(field, value)); }
解决方法就是在转入sql语句中 把日期的字符串"2011-01-17T16:10:26.000+0800"转格式 to_timestamp('2011-01-17T16:10:26.000+0800','yyyy-MM-dd HH24:mi:ssxff')
8.此时在根目录运行ant run-install
9.如果报错,java return 99之类的错误,修改build.xml的510行,去掉failοnerrοr="true"注:此方法貌似只会跳过错误,不会解决错误,最后安装好之后会显示build successful,但是进入opentaps之后可能有的地方访问会报错
10.再运行ant run-install
11.成功后运行startofbiz.bat
12.浏览器访问http://安装opentaps设备ip:8080/opentaps13.默认帐号密码是admin,opentaps,网上很多说ofbiz的是错误的,实际上密码是opentaps,可以在数据库USER_LOGIN表里面看到,可能是1.5更改了