bug宝典之JAVA篇 web工程识别不了

使用mac的split view还是比较爽,可以一边编写代码,一边写blog,遇到问题就可以记录下来。要是10年前开始有笔记的习惯就好了,当年年少不懂事,现在正当年,亡羊补牢,希望不晚。
以前习惯使用eclipse,win10下面使用idea,跑我的程序,也可以跑起来,但mac下面不知道为啥就出现下面的错误。
这个错误咋看一下,挺熟悉,无非告诉你jstl的标签他不认识,也就是说没有加载进去,可以在网上找的很多的办法,都没有解决方案。苦恼中。

org.apache.jasper.JasperException: /WEB-INF/views/include/taglib.jsp(2,61) PWC6188: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:172)
	at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:431)
	at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:240)
	at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:502)
	at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:582)
	at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1652)
	at org.apache.jasper.compiler.Parser.parse(Parser.java:185)
	at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
	at org.apache.jasper.compiler.ParserController.parse(ParserController.java:161)
	at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:394)
	at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:431)
	at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:574)
	at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1652)
	at org.apache.jasper.compiler.Parser.parse(Parser.java:185)
	at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
	at org.apache.jasper.compiler.ParserController.parse(ParserController.java:145)
	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:212)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.JspPropertyGroupServlet.service(JspPropertyGroupServlet.java:132)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:276)
	at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:103)

对比mac和win10下面的差别
1
但是mac下面却是这样的
2
2
有上面可以看出,既没有spring,也没有facets可以配置。如果有,还可以参考Intellij Idea识别Java Web项目
没有spring的问题很好解决,按照下面的操作,勾选spring support就可以了。
在这里插入图片描述
没有web选项,研究了一下,是没有Java EE:Java Server Faces,选上重启就可以了
2
这些配置完毕后,可以,注意下面两个目录要配置正确
3
即使按照上面的配置,启动仍然出现错误,真是纠结。。
接着我尝试直接使用maven中jetty:run启动,正常解决
配置

<plugin>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>9.4.5.v20170502</version>
				<configuration>
					<scanIntervalSeconds>10</scanIntervalSeconds>
					<httpConnector>
						<port>8097</port>
					</httpConnector>
					<webApp>
						<contextPath>/fay</contextPath>
					</webApp>
				</configuration>
			</plugin>

按照上面的配置,感觉还是不爽,因为速度太慢了,这样的速度估计没几个人原因等。

[INFO] Started @69605ms
[INFO] Started Jetty Server
[INFO] Using Non-Native Java sun.nio.fs.PollingWatchService
[WARNING] Quiet Time is too low for non-native WatchService [sun.nio.fs.PollingWatchService]: 1000 < 5000 ms (defaulting to 5000 ms)

查了一下,mvn jetty:run 启动很慢解决办法,虽然文章里面时jetty8,但是在jetty9也一样适用,作者并没有写明确metadata-complete="true"如下所示

<web-app id="WebApp_ID" version="3.0"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true">

jetty-contexts.xml所在的位置并没有强制要求

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
	<Call name="setAttribute">
		<Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg>
		<Arg>.*/.*jsp-api-[^/]\.jar$|./.*jsp-[^/]\.jar$|./.*taglibs[^/]*\.jar$
		</Arg>
	</Call>
</Configure>

pom中defaultsDescriptor并不需要写,只是描述而已

<plugin>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>9.4.5.v20170502</version>
				<configuration>
					<scanIntervalSeconds>10</scanIntervalSeconds>
					<httpConnector>
						<port>8097</port>
					</httpConnector>
                    <contextXml>src/test/resources/jetty/jetty-contexts.xml</contextXml>
					<webApp>
						<contextPath>/fay</contextPath>
					</webApp>
				</configuration>
			</plugin>

配置完毕后,jetty启动超级快。不过这个时候,如果用了<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>,会提示找不到,应该是web.xml增加了metadata-complete="true"导致,还好现在很少有项目这么使用,我就懒得去探究了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值