Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;“负时间”;尝试运行tomcat7 maven插件生成的WAR时:仅限exec WAR_Java_Jsp_Tomcat7_Maven Tomcat Plugin - Fatal编程技术网

Java &引用;“负时间”;尝试运行tomcat7 maven插件生成的WAR时:仅限exec WAR

Java &引用;“负时间”;尝试运行tomcat7 maven插件生成的WAR时:仅限exec WAR,java,jsp,tomcat7,maven-tomcat-plugin,Java,Jsp,Tomcat7,Maven Tomcat Plugin,我使用tomcat7 maven插件生成可执行war:exec war only。插件配置如下所示: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration>

我使用
tomcat7 maven插件生成可执行war:exec war only
。插件配置如下所示:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warFile>${project.build.outputDirectory}/${project.build.finalName}.war</warFile>
        <mode>both</mode>
        <enableNaming>true</enableNaming>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>
正如您所看到的,我在JSP名称中没有空格或特殊字符。我还尝试将app.jar放在驱动器的根目录中,以排除文件夹名称中可能的任何字符。效果是一样的


UPD。我使用远程调试来查看发生了什么。行
Long jspLastModified=ctxt.getLastModified(ctxt.getJspFile())返回
-1
。在它中
ctxt.getJspFile()
返回
“/jsp/login.jsp”

不确定问题发生的原因,但找到了解决方案。发生错误的原因是您尝试生成的一个或多个文件的时间为负值。(
file.getLastModified()
返回负值)。如果这是一个庞大的项目,可能很难追踪其中哪一个出了问题。下面的代码可能会有所帮助:

package com.example;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ModifyAll {
    public static void main(String[] args) throws IOException {
        List<File> folderList = new ArrayList<>();
        List<File> fileList = new ArrayList<>();

        File folder = new File("D:/Rakhu/Copy/projectfolder/src");
        FileVO baseFileVO = segregateFiles(folder);
        fileList.addAll(baseFileVO.getFileList());
        folderList.addAll(baseFileVO.getFolderList());

        for (int i = 0; i < folderList.size(); i++) {
            FileVO thisVO = segregateFiles(folderList.get(i));
            fileList.addAll(thisVO.getFileList());
            folderList.addAll(thisVO.getFolderList());
        }

        for (int i = 0; i < fileList.size(); i++) {
            Date dte = new Date();
            long milliSeconds = dte.getTime();
            System.out.println("Setting Time For " + fileList.get(i) + " as " + milliSeconds);
            fileList.get(i).setLastModified(milliSeconds);
        }
        System.out.println("Succesfully Modified..!!!");
    }

    public static FileVO segregateFiles(File folder) {
        List<File> folderList = new ArrayList<>();
        List<File> fileList = new ArrayList<>();

        File[] listOfFiles = folder.listFiles();
        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                fileList.add(listOfFiles[i]);
            } else {
                folderList.add(listOfFiles[i]);
            }
            System.out.println(listOfFiles[i]);
        }
        return new FileVO(fileList, folderList);
    }
}



FileVO.java
package com.example;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileVO {
    List<File> fileList = new ArrayList<>();
    List<File> folderList = new ArrayList<>();

    public FileVO(List<File> fileList, List<File> folderList) {
        this.fileList = fileList;
        this.folderList = folderList;
    }

    public List<File> getFileList() {
        return fileList;
    }

    public void setFileList(List<File> fileList) {
        this.fileList = fileList;
    }

    public List<File> getFolderList() {
        return folderList;
    }

    public void setFolderList(List<File> folderList) {
        this.folderList = folderList;
    }
}
package.com.example;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
公共类ModifyAll{
公共静态void main(字符串[]args)引发IOException{
List folderList=新建ArrayList();
List fileList=new ArrayList();
文件夹=新文件(“D:/Rakhu/Copy/projectfolder/src”);
FileVO baseFileVO=隔离文件(文件夹);
addAll(baseFileVO.getFileList());
addAll(baseFileVO.getFolderList());
对于(int i=0;i
是否重复:?例外情况相同,但原因不同。这个问题与文件名中的特殊字符有关,并在Tomcat7.0.27中修复。我没有特别的角色,有Tomcat 7.0.37。只是一个简单的问题:你会住在UTC以东的时区吗?是的,我在UTC+4。理由:想知道您的问题是否相关:如果部署的JSP文件由于某种原因具有与负wrt epoch(因此,请查看部署的文件的时间戳)相对应的时间戳,则可能会出现此错误。只需在受影响的JSP上执行
File.getLastModified()
,并查看它返回什么。
package com.example;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ModifyAll {
    public static void main(String[] args) throws IOException {
        List<File> folderList = new ArrayList<>();
        List<File> fileList = new ArrayList<>();

        File folder = new File("D:/Rakhu/Copy/projectfolder/src");
        FileVO baseFileVO = segregateFiles(folder);
        fileList.addAll(baseFileVO.getFileList());
        folderList.addAll(baseFileVO.getFolderList());

        for (int i = 0; i < folderList.size(); i++) {
            FileVO thisVO = segregateFiles(folderList.get(i));
            fileList.addAll(thisVO.getFileList());
            folderList.addAll(thisVO.getFolderList());
        }

        for (int i = 0; i < fileList.size(); i++) {
            Date dte = new Date();
            long milliSeconds = dte.getTime();
            System.out.println("Setting Time For " + fileList.get(i) + " as " + milliSeconds);
            fileList.get(i).setLastModified(milliSeconds);
        }
        System.out.println("Succesfully Modified..!!!");
    }

    public static FileVO segregateFiles(File folder) {
        List<File> folderList = new ArrayList<>();
        List<File> fileList = new ArrayList<>();

        File[] listOfFiles = folder.listFiles();
        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                fileList.add(listOfFiles[i]);
            } else {
                folderList.add(listOfFiles[i]);
            }
            System.out.println(listOfFiles[i]);
        }
        return new FileVO(fileList, folderList);
    }
}



FileVO.java
package com.example;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileVO {
    List<File> fileList = new ArrayList<>();
    List<File> folderList = new ArrayList<>();

    public FileVO(List<File> fileList, List<File> folderList) {
        this.fileList = fileList;
        this.folderList = folderList;
    }

    public List<File> getFileList() {
        return fileList;
    }

    public void setFileList(List<File> fileList) {
        this.fileList = fileList;
    }

    public List<File> getFolderList() {
        return folderList;
    }

    public void setFolderList(List<File> folderList) {
        this.folderList = folderList;
    }
}