相关疑难解决方法(0)

在Servlet/JSP中加载属性文件

我已经创建了一个jar来自我的Java project想要使用相同的jar JSP Servlet Project.我正在尝试加载一个属性文件,让我说我JSP Servlet Project保留的sample.properties WEB/properties/sample.properties应该被一个类中的类读取.我jar在一个jar 类中使用以下代码来访问它.

Properties prop=new Properties();
prop.load(/WEB-INF/properties/sample.properties);
Run Code Online (Sandbox Code Playgroud)

但每次我都会fileNotFound exception.
请建议我的解决方案.

这是结构

WEB-INF
      |
       lib
          |
           myproject.jar
                       |
                        myclass (This class needs to read sample.properties)
      |
       properties
                 |sample.properties
Run Code Online (Sandbox Code Playgroud)

java jsp servlets properties

6
推荐指数
2
解决办法
5万
查看次数

如何从属性文件的服务器路径获取URL位置

我需要将属性文件的URI传递给以下方法(第三方jar)

    defaultConfiguration = Factory.createDefaultConfiguration(propertiesUrl.toURI());
PayClient client = Factory.createClient(defaultConfiguration);
Run Code Online (Sandbox Code Playgroud)

当我在服务器上部署我的代码时,我得到了这个路径,即propertiesUrl.toURI()as abc://localhost/server/test/payment/ConfigLookup.properties

第三方应用程序拒绝此值,并且不会创建用于创建连接客户端的配置.

传递属性文件在本地bin文件夹中的示例代码可以正常工作.

收到的路径为 propertiesUrl.toURI()

file:/D:/Code/bin/ConfigLookup.properties
Run Code Online (Sandbox Code Playgroud)

以上创建了一个成功的连接.

请指导我们之间缺少什么.如何使服务器代码以与本地代码相似的方式工作.

java url uri config java-ee

6
推荐指数
1
解决办法
1081
查看次数

绝对的相对路径(Eclipse,JSP)

我在Eclipse(JSP)中创建一个Web应用程序,并使用Tomcat作为服务器(集成到Eclipse中).我必须在下面创建对象并指定配置文件的路径.这条绝对的道路很有效:

Store store = StoreFactory.create("file:///C:/Users/Aliens/workspace/myProject/WebContent/config/sdb.ttl");
Run Code Online (Sandbox Code Playgroud)

但是我想知道为什么我不能使用相对路径.它应该是"config/sdb.ttl"正确的(如果项目的名称是根)?但它无法以这种方式找到它(NotFoundException).

eclipse jsp tomcat relative-path absolute-path

5
推荐指数
1
解决办法
7661
查看次数

使用getRealPath()从bean获取文件位置

我从后台bean访问外部文件时遇到问题.我想做的是使用ttf文件,以便通过iText库使用该字体.当我通过Netbeans 7.2运行我的应用程序时,下面的代码工作正常:

private static String fontPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("arialuni.ttf");
Run Code Online (Sandbox Code Playgroud)

但是当我通过Oracle Weblogic 11g控制台手动部署我的ear文件时,找不到ttf文件,我得到NullPointerException.

我已经尝试了几种方法让它工作但没有机会.如果有人可以帮助我,我会非常感激.

问候

jsf netbeans weblogic primefaces

5
推荐指数
1
解决办法
7876
查看次数

JavaEE - WAR - 已部署::如何从资源目录中读取文件

我认为应该这样做的"正确"方式是,getResourceAsStream()但它似乎并没有削减它.

我的情况:

我有一个Java的Web应用程序,最终将部署到几个不同的Web服务器,可能是GlassFish,TomcatWildFly.目前我正在使用Netbeans处理Mac,我可以访问WildFlyGlassFish.该项目已经成熟

我需要做的是读取和写入两个不同的Excel文件.一个用作"模板",一个用作输出文件.该应用程序以前独立运行,我试图将其包装到JSF网站.

我需要FileInputStream为我的其中一个方法获取一个并最终创建一个输出文件,该文件将通过http提供给用户.

根据我的收集,适当的方式来做到这一点应该是:

XLSX文件

/src/main/resources/ANALYSIS_template.xlsx
Run Code Online (Sandbox Code Playgroud)

位置一旦编译成WAR文件:: WildFly

/usr/local/opt/wildfly-as/libexec/standalone/deployments/fleetForecast-1.0-SNAPSHOT.war/WEB-INF/classes/ANALYSIS_template.xlsx
Run Code Online (Sandbox Code Playgroud)

位置一旦编译成WAR文件:: GlassFish

~/devel/fleetforecast/target/fleetForecast-1.0-SNAPSHOT/WEB-INF/classes/ANALYSIS_template.xlsx
Run Code Online (Sandbox Code Playgroud)

Java代码

我想我可能设法使用以下命令获取文件的输入流:

InputStream is1 = getClass().getResourceAsStream("ANALYSIS_template.xlsx");
Run Code Online (Sandbox Code Playgroud)

我也尝试过("/ANALYSIS_template.xlsx")类似行为的方式.当我尝试从此输入流中读取时

try {
        is1.read();
    } catch (IOException ex) {
        Logger.getLogger(FleetBean.class.getName()).log(Level.SEVERE, null, ex);
    }
Run Code Online (Sandbox Code Playgroud)

我得到了java.lang.NullPointerException.

Caused by: java.lang.NullPointerException
    at org.mitre.fleetforecast.bean.FleetBean.<init>(FleetBean.java:57)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at java.lang.Class.newInstance(Class.java:433)
    at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186)
    ... 76 more
Run Code Online (Sandbox Code Playgroud)

任何提供或想到的援助将不胜感激.

java glassfish war java-ee maven

5
推荐指数
1
解决办法
1万
查看次数

在Java servlet中读取自己的MANIFEST.MF

我试图在Java servlet中读取自己的MANIFEST.MF资源.我的情况:我在EAR中有一个WAR(带有我想要阅读的清单).EAR中还有其他几个WAR和JAR.类路径真的很长.

我尝试了Web中的几种方法,包括StackOverflow.

我可以使用读取所有MANIFEST.MF文件

this.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
Run Code Online (Sandbox Code Playgroud)

并遍历它们.但是,我不知道哪一个是我的 - 我甚至不知道Implementation-Title,因为这是由构建管道生成的.(我可以通过构建管道的知识来猜测,因此我知道正确的清单就在那里.但是,我无法猜测生产代码.)

当然,

this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
Run Code Online (Sandbox Code Playgroud)

从类路径上的其他jar返回一个完全错误的清单.

我也试过了

this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
Run Code Online (Sandbox Code Playgroud)

但它返回null.

如何访问属于包含当前运行的servlet的WAR的MANIFEST.MF文件?

java servlets manifest.mf war

5
推荐指数
1
解决办法
885
查看次数

Maven资源过滤

我想写一个属性文件的构建信息.我找到了Maven资源过滤插件.这就是我的pom相关部分的样子:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>project.mygroup</groupId>
        <artifactId>prject</artifactId>
        <version>1.0-20190130-1</version>
    </parent>

    <artifactId>project-war</artifactId>
    <packaging>war</packaging>
    <version>1.0-20190130-1</version>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <timestamp>${maven.build.timestamp}</timestamp>
        <maven.build.timestamp.format>
        yyy-MM-dd HH:mm
        </maven.build.timestamp.format>

    </properties>

    <dependencies>
    ...
    </dependencies>

    <build>
        <finalName>project</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>
            <!-- Create war from the project -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>

            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>    

</project>
Run Code Online (Sandbox Code Playgroud)

如果开始mvn clean package构建成功,但我build.properties在src/main/resources下的文件将不包含构建信息.

我的属性文件如下所示:

build.version=${pom.version}
build.date=${timestamp}
build.url=${pom.url}
build.name=${pom.name} …
Run Code Online (Sandbox Code Playgroud)

java-ee maven

5
推荐指数
1
解决办法
880
查看次数

放置.txt文件的位置,以便java servlet可以在运行时读取它

我正在使用eclipse制作动态网页.它是一个依赖servlet传递/检索数据的简单程序.我的一个servlet必须打开.txt文件来读取其内容并将其发送到客户端.但是我收到了FileNotFound异常.我知道它,因为我不知道如何/在哪里放置txt文件,以便servlet可以在运行时找到该文件.我正在研究日食.你能提供一些提示吗?

谢谢

java file-io servlets

4
推荐指数
1
解决办法
7291
查看次数

如何在java中获取当前目录?

我试图从java获取我的项目的当前目录.我使用以下代码行来获取路径详细信息.

类型1:

File directory = new File (".");
try {
    System.out.println ("Current directory's canonical path: " 
            + directory.getCanonicalPath()); 
    System.out.println ("Current directory's absolute  path: " 
                + directory.getAbsolutePath());
}catch(Exception e) {
    System.out.println("Exceptione is ="+e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

类型2:

String currentDir = System.getProperty("user.dir");
System.out.println("Current dir using System:" +currentDir);
Run Code Online (Sandbox Code Playgroud)

从主类执行上面的代码我得到项目目录.当我从服务器端执行时,得到"当前dir使用System:D:\ Apache Tomcat 6.0.16\bin".但我的项目位于D:\Apache Tomcat 6.0.16\wepapps\SampleStructs.

请给我任何建议,并帮助我解决这个问题.

java linux directory struts2 java-ee

4
推荐指数
1
解决办法
2万
查看次数

Tomcat webapp 中原始资源的位置

我正在开发一个jsp + servlet应用程序,打包成war,部署到tomcat 8。

我知道WEB-INF是存储不被服务的文件的文件夹,仅在服务器端处理:如html或jsp片段等。我需要存储一些xml。Servlet 在处理请求时会读取这些 xml。

问题是:

我应该将这些 xml 存储在同一个 WEB-INF 文件夹中吗?或者有什么特别的地方吗?我不想做非常反模式的事情。

java jsp tomcat servlets

4
推荐指数
1
解决办法
4729
查看次数