jfinal1.5的JFinalClassLoader具体怎么使用呢?

发布于 2021-11-20 11:09:35 字数 234 浏览 734 评论 12

自从JFinal升级到1.5之后,项目采用Maven搭建。

但是最简单的demo都跑不起来,求在Maven中jfinal的启动,这个新增加的JFinalClassLoader具体该如何使用呢。

求文档,求demo。@jfinal

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

感情旳空白 2021-11-26 13:03:04

我的项目一切正常

各自安好 2021-11-26 13:02:54

同样jfinal1.5+maven 使用JFinal.start启动不起来,貌似是jetty版本问题,无奈使用eclipse插件
run-jetty-run插件来运行项目

顾忌 2021-11-26 13:02:51

JFinal 1.6 发布后会提供一个maven demo供下载

羁拥 2021-11-26 13:02:06

回复
:)

伴我心暖 2021-11-26 13:00:19

关键在于 pom.xml 配置,给你一个可用的配置做参考,JFinal 1.6 版本的 demo 会给出 maven版本:

<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>
  <groupId>com.jfinal</groupId>
  <artifactId>demo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>demo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
  
  <build>
	 	<sourceDirectory>${project.basedir}/src</sourceDirectory>
	    <scriptSourceDirectory>${project.basedir}/scripts</scriptSourceDirectory>
	    <testSourceDirectory>${project.basedir}/test</testSourceDirectory>
	    <outputDirectory>${project.basedir}/web/WEB-INF/classes</outputDirectory>
	    <testOutputDirectory>${project.basedir}/web/WEB-INF/test-classes</testOutputDirectory>
	    <resources>
	      <resource>
	        <!-- directory>${project.basedir}/resources</directory -->
	        <directory>${project.basedir}/src</directory>
	        <excludes><exclude>**/*.java</exclude></excludes>
	      </resource>
	    </resources>
	    <testResources>
	      <testResource>
	        <directory>${project.basedir}/test/resources</directory>
	        <excludes><exclude>**/*.java</exclude></excludes>
	      </testResource>
	    </testResources>
	    <!-- directory>${project.basedir}/target</directory -->
	    <directory>${project.basedir}/web/WEB-INF/target</directory><!-- very important -->
    <finalName>demo</finalName>
  </build>
  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
    	<groupId>com.jfinal</groupId>
    	<artifactId>jetty-server</artifactId>
    	<version>8.1.8</version>
    	<scope>provided</scope>
    </dependency>
    <dependency>
    	<groupId>com.jfinal</groupId>
    	<artifactId>jfinal</artifactId>
    	<version>1.5</version>
    </dependency>
    <dependency>
		<groupId>c3p0</groupId>
		<artifactId>c3p0</artifactId>
		<version>0.9.1.2</version>
	</dependency>
	<dependency>
		<groupId>com.jfinal</groupId>
		<artifactId>cos</artifactId>
		<version>26Dec2008</version>
	</dependency>
	<dependency>
		<groupId>org.freemarker</groupId>
		<artifactId>freemarker</artifactId>
		<version>2.3.16</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.20</version>
	</dependency>
	
	<!-- 有新 jar 包加入就在下面添加 dependency -->
	<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.7.3</version>
	</dependency>
	
	<!-- end -->
	
  </dependencies>
</project>

注意一下 sourceDirectory、outputDirectory等等几个路径的配置,我是将其配置成了自己习惯的路径,与默认的配置不同

顾忌 2021-11-26 12:49:57

折腾 Ok了 么?没OK我发一个demo给你!

断爱 2021-11-26 10:32:04

关键在于 pom.xml 配置,给你一个可用的配置做参考,JFinal 1.6 版本的 demo 会给出 maven版本:

<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>
  <groupId>com.jfinal</groupId>
  <artifactId>demo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>demo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
  
  <build>
	 	<sourceDirectory>${project.basedir}/src</sourceDirectory>
	    <scriptSourceDirectory>${project.basedir}/scripts</scriptSourceDirectory>
	    <testSourceDirectory>${project.basedir}/test</testSourceDirectory>
	    <outputDirectory>${project.basedir}/web/WEB-INF/classes</outputDirectory>
	    <testOutputDirectory>${project.basedir}/web/WEB-INF/test-classes</testOutputDirectory>
	    <resources>
	      <resource>
	        <!-- directory>${project.basedir}/resources</directory -->
	        <directory>${project.basedir}/src</directory>
	        <excludes><exclude>**/*.java</exclude></excludes>
	      </resource>
	    </resources>
	    <testResources>
	      <testResource>
	        <directory>${project.basedir}/test/resources</directory>
	        <excludes><exclude>**/*.java</exclude></excludes>
	      </testResource>
	    </testResources>
	    <!-- directory>${project.basedir}/target</directory -->
	    <directory>${project.basedir}/web/WEB-INF/target</directory><!-- very important -->
    <finalName>demo</finalName>
  </build>
  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
    	<groupId>com.jfinal</groupId>
    	<artifactId>jetty-server</artifactId>
    	<version>8.1.8</version>
    	<scope>provided</scope>
    </dependency>
    <dependency>
    	<groupId>com.jfinal</groupId>
    	<artifactId>jfinal</artifactId>
    	<version>1.5</version>
    </dependency>
    <dependency>
		<groupId>c3p0</groupId>
		<artifactId>c3p0</artifactId>
		<version>0.9.1.2</version>
	</dependency>
	<dependency>
		<groupId>com.jfinal</groupId>
		<artifactId>cos</artifactId>
		<version>26Dec2008</version>
	</dependency>
	<dependency>
		<groupId>org.freemarker</groupId>
		<artifactId>freemarker</artifactId>
		<version>2.3.16</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.20</version>
	</dependency>
	
	<!-- 有新 jar 包加入就在下面添加 dependency -->
	<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.7.3</version>
	</dependency>
	
	<!-- end -->
	
  </dependencies>
</project>

注意一下 sourceDirectory、outputDirectory等等几个路径的配置,我是将其配置成了自己习惯的路径,与默认的配置不同

羁拥 2021-11-25 17:17:08

JFinal 是按照 JFinal.start(..)方法中的参数来启动项目的, pom.xml中的配置只有 jar 依赖对 jfinal 是有影响的,所以重点注意 JFinal.start(...) 方法中的第一个参数即可

悲喜皆因你 2021-11-24 13:02:40

还是存在问题,首先我按照maven文件结构的标准配置了build部分。

<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
		<scriptSourceDirectory>${project.basedir}/src/main/webapp</scriptSourceDirectory>
		<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
		<outputDirectory>${project.basedir}/target/classes</outputDirectory>
		<testOutputDirectory>${project.basedir}/target/test-classes</testOutputDirectory>
		<resources>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>${project.basedir}/src/test/resources</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</testResource>
		</testResources>

		<directory>${project.basedir}/target</directory><!-- very important -->
		<finalName>everdata</finalName>

启动方式采用:

JFinal.start("src/main/webapp", 9090, "/", 10);

问题1:出现无法找到resource包下面的配置文件,日志显示,jfinal是在src/main/webapp/WEB-INF 下面找。而上面的pom配置是配置了resource的directory目录的。

为了检查后面的错误,copy了配置文件到WEB-INFO下面,再次启动。出现错误:file serach error:E:WorkspaseWeTeamEverDataCentersrcmainwebappWEB-INFlib is not a dir!

由此我发现Jfinal根本没有按照pom配置的Directory来读取配置等信息,而是跟JFinal.start();里面的这个路径有关,于是我改成

JFinal.start("target", 9090, "/", 10);

启动成功,日志没有报错,但好像JFinal并没有加载成功资源文件和配置等等。

访问都是404或者403,找不到Controller等等。

由此而来,maven项目下启动JFinal还是终告失败,继续求指点,让我们在Maven项目下使用JFinal少走弯路。@jfinal

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文