我遇到过一种我想在运营商上进行模式匹配的情况.但是,这会Pattern match(es) are overlapped导致GHC出错.我无法弄清楚为什么.不允许运营商进行模式匹配吗?我假设因为括号中的运算符符号将其转换为标识符,所以这应该有效.
test :: (Integer -> Integer -> Integer) -> String
test (+) = "plus"
test (-) = "minus"
test _ = "other"
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以完成我想要做的事情.我只是好奇为什么这不起作用.
我正在学习J2EE和EJB,我遇到了一个奇怪的问题.这是我的项目设置:
我正在使用Glassfish 3.1和Eclipse 3.7.我在Eclipse中有两个项目:
myEjbProject myWebProject我注入一个EJB会话bean mySessionBeanPackage.mySessionBean从myEjbProject成servlet myServletPackage.myServlet中myWebProject,然后(在servlet)调用会话bean定义的简单方法.
我已经提供myWebProject了一个引用myEjbProject(使用Properties - > Project References对话框).但是,由于某种原因,服务器无法找到会话bean.我得到的确切错误是:
严重:未找到类[LmySessionBeanPackage/mySessionBean].加载[class myServletPackage.myServlet]时出错
请注意,这两个 EJB项目和Web项目已发布到服务器,我已经反复检查为bean生成的类文件,其实存在于服务器上(所以我不能想出一个理由为什么服务器无法找到它们).
谁能告诉我我做错了什么?
我也试过了
将classes文件夹myEjbProject显式添加到Java Build Path - > Libraries列表中myWebProject.这是项目参考的补充(虽然我认为首先添加项目参考应该已经足够了).无论如何,它没有任何区别(与以前相同的错误信息).
myEjbProject使用Export - > EJB Jar File选项创建JAR文件(我现在不想编写Ant脚本).然后我把这个JAR放在Java Build Path - > Libraries部分myWebProject.这种方法也没有解决问题(与以前相同的错误信息).
修改会话bean
并相应地修改注射.例如,对于只有本地接口的bean,我使用了:
@EJB mySessionBeanPackage.mySessionBeanLocal myBean
这种方法也没有解决问题(与以前相同的错误信息).
myEjbProject完全废除并将会话bean添加到myWebProjectas myServletPackage.mySessionBean(与servlet相同的包).在这种情况下,我可以使用成功将会话bean注入servlet
@EJB mySessionBeanPackage.mySessionBean myBean
废除myEjbProject …