java.lang.arrayindexoutofboundsexception 带有环境变量

java.lang.arrayindexoutofboundsexception with environment variables

我正在处理 spring 从数据库读取然后在处理器中进行一些处理然后写入文件的批处理示例。

这是我的 reader :

public JdbcCursorItemReader<FichierEclate> readerDB(){

         JdbcCursorItemReader<FichierEclate> reader = new JdbcCursorItemReader<FichierEclate>();

         reader.setDataSource(ds);

         reader.setSql(query(ClassApp));

         reader.setRowMapper(new FichierEclateRowMapper());

         return reader;

       }

在“reader.setSql(query(ClassApp))”中,我调用了一个字符串类型的函数“query”,它对我应该放在 reader.setSql 中的 sql 查询进行了更改.这是函数:

public String query(String ClassApp) {

             if (ClassApp != null && !ClassApp.trim().equals(""))

             {      String[] token = ClassApp.split(".");

                    String tableName="TF01_TRANSFERT_"+Country;

               String QUERY_FIND_FILES =

                   "SELECT TF01TFID, TF01APPCLS, TF01APPLI, TF01NCPTE, TF01NLOT, FROM" +tableName+ "WHERE TF01APPCLS='"+ token[0] +"' AND TF01APPLI='"+ token[1] +"' AND TF01STID=3 ";

        return QUERY_FIND_FILES; }

             else return result;

       }

此函数将字符串变量作为输入并对其进行拆分以在 sql 查询中使用其部分,如代码所示。

我的问题: 当变量“ClassApp”和“country”被静态声明时,意思是,当我给它们赋值只是为了测试批处理作业时,一切正常,我得到了我想要的结果。 一旦我将它们更改为环境变量,我就收到了这个错误

java.lang.arrayindexoutofboundsexception 0

这些变量应该是环境变量,我做的就像截图中所示 enter image description here

然后我用 :

给他们打电话
private  String ClassApp=System.getenv("ClassApp");

   private  String Country=System.getenv("Country");

谁能帮我解决这个问题? 当这些变量静态地获取值时,一开始一切正常吗?但是当更改为 ENV.VAR 时,我得到了这个错误 java.lang.arrayindexoutofboundsexception ????

为了解决这个问题,我只需要创建代表点的正则表达式。为此,我们需要转义 .. 有几种方法可以做到这一点,但最简单的方法可能是使用 \(在 String 中需要写成“\”,因为 \ 在那里也很特殊,需要另一个 \ 进行转义).

所以我的问题的解决方案是:

String[] token = ClassApp.split("\\.");