我有一个应用程序,我正在尝试将其包装到jar中以便于部署.当作为一组可从CLASSPATH访问的类运行时,应用程序编译并运行正常(在Windows cmd窗口中).但是当我在我的类中运行并尝试在同一cmd窗口中使用java 1.6运行它时,我开始获得异常:
C:\dev\myapp\src\common\datagen>C:/apps/jdk1.6.0_07/bin/java.exe -classpath C:\myapp\libs\commons -logging-1.1.jar -server -jar DataGen.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at com.example.myapp.fomc.common.datagen.DataGenerationTest.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 1 more
Run Code Online (Sandbox Code Playgroud)
有趣的是,违规的LogFactory似乎是在commons-logging-1.1.jar中,它位于指定的类路径中.jar文件(是的,它确实存在):
C:\dev\myapp\src\common\datagen>dir C:\myapp\libs\commons-logging-1.1.jar
Volume in drive C is Local Disk
Volume Serial Number is ECCD-A6A7
Directory of C:\myapp\libs
12/11/2007 11:46 AM 52,915 commons-logging-1.1.jar
1 File(s) 52,915 bytes
0 Dir(s) 10,956,947,456 bytes free
Run Code Online (Sandbox Code Playgroud)
commons-logging-1.1.jar文件的内容:
C:\dev\myapp\src\common\datagen>jar -tf C:\myapp\libs\commons-logging-1.1.jar
META-INF/
META-INF/MANIFEST.MF
org/ …Run Code Online (Sandbox Code Playgroud) 在编写自己的自动更新程序时,是否有一个我应该遵循的通用框架?
前一段时间我正在阅读如何创建一个"引导过滤器",它将在主应用程序之前首先加载(因为由于文件锁定而无法更新正在运行的应用程序等)
那么任何提示/最佳实践呢?
我有一个产品品牌菜单,我想分成4列.因此,如果我有39个品牌,那么我希望每列的最大项目数为10(在最后一列中有一个间隙.以下是我如何计算列的项目数(使用C#):
int ItemCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(BrandCount) / 4m));
Run Code Online (Sandbox Code Playgroud)
所有转换对我来说都很难看.有没有更好的方法在C#中对整数进行数学运算?
我试图编写一个样式表,给定一个XML输入(显然)和一个指定"目标"的参数,将产生一个与该目标匹配的命令列表.这是样式表:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="target" select="cora_cmd"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="command/program">
<xsl:if test="@name=$target">
<xsl:message terminate="no">found match <xsl:value-of select="$target"/> </xsl:message>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude">
<xsl:attribute name="href"><xsl:value-of select="../@help"/></xsl:attribute>
</xi:include>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
我正在调用xsltproc来执行此样式表,如下所示:
xsltproc --param target cora_cmd gen-commands.xsl commands.xml
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是目标的参数值似乎没有设置.至少来自消息的名称似乎是一个空字符串,并且测试xsl:if总是失败.我确信这是由于我的一些骨头错误,但我还没有意识到这一点.有谁知道我做错了什么?
我对蟒蛇世界比较陌生,但这似乎很直接.
谷歌对我大吼大叫这个代码需要优化:
class AddLinks(webapp.RequestHandler):
def post(self):
# Hash the textarea input to generate pseudo-unique value
hash = md5.new(self.request.get('links')).hexdigest()
# Seperate the input by line
allLinks = self.request.get('links').splitlines()
# For each line in the input, add to the database
for x in allLinks:
newGroup = LinkGrouping()
newGroup.reference = hash
newGroup.link = x
newGroup.put()
# testing vs live
#baseURL = 'http://localhost:8080'
baseURL = 'http://linkabyss.appspot.com'
# Build template parameters
template_values = {
'all_links': allLinks,
'base_url': baseURL,
'reference': hash,
}
# Output the template …Run Code Online (Sandbox Code Playgroud) 有没有一种很好的方法来确定一个人是否启用了弹出窗口拦截器?我需要维护一个Web应用程序,不幸的是它有大量弹出窗口,我需要检查用户是否启用了弹出窗口阻止程序.
我发现这样做的唯一方法是从javascript打开一个窗口,检查它是否打开以确定是否启用了阻止程序然后立即关闭它.
这有点令人讨厌,因为没有启用它的用户会在窗口打开和关闭时看到屏幕上的小闪光.
有没有其他非突兀的方法来实现这一目标?
我一直试图让PEAR :: mail成功地向hotmail用户发送电子邮件而不被标记为垃圾邮件并最终进入垃圾邮件文件夹,我只使用hotmail与yahoo/gmail没有问题.
谷歌建议这是hotmail的常见问题,可能的原因可能包括
检查了以上所有我只能想到另一个原因 - 格式不正确的标题?
为了测试这个理论,我设置outlook通过PEAR :: mail使用的相同地址发送电子邮件并发送快速测试 - 它直接发送到我的收件箱
所以我将PEAR :: mail发送的电子邮件中的标题与Outlook发送的标题进行了比较,并且只有一些差异 - 我只列出了差异以节省空间(以及人们的眼睛)
PEAR ::邮件头(不在outlook头文件中)
X-PHP-Script: www.example.com/register.php for [users ip address]
Run Code Online (Sandbox Code Playgroud)
Outlook标头(不在PEAR ::邮件头中)
X-Mailer: Microsoft Office Outlook 11
Thread-Index: Ack6CWSQlgV8s6+6SWyifka2NNpB7g==
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一其他差异是
外表
Received: from myhomehostname.com ([ip address] helo=simber)
by mywebhostname.com with local (Exim 4.67)
Run Code Online (Sandbox Code Playgroud)
PEAR ::邮件
Received: from apache by mywebhostname.com with local (Exim 4.67)
Run Code Online (Sandbox Code Playgroud)
标题中的这些小差异可能是原因还是我在错误的地方?我知道这可能有问题因此为什么我选择使用PEAR :: mail类而不是自己滚动但现在我真的不知道该去哪里,任何帮助都将非常感激.
更新:根据changelog的建议,我已经尝试将MS标头添加到PEAR :: mail类,我尝试用PHPMailer替换PEAR :: mail(有和没有额外的标头) - …
我们有一个有着悠久历史的git项目.
具体来说,在项目的早期,项目中有相当多的二进制资源文件,这些文件现在已被删除,因为它们实际上是外部资源.
但是,由于先前提交了这些文件,我们的存储库大小> 200MB(总结账时间约为20MB).
我们想要做的是"折叠"历史记录,以便存储库看起来是从以后的版本创建的.例如
1-----2-----3-----4-----+---+---+
\ /
+-----+---+---+
Run Code Online (Sandbox Code Playgroud)
因此,我们希望在某一点之前丢失项目历史.此时只有一个分支,因此尝试处理多个起点等没有复杂性.但是我们不希望丢失所有历史记录并使用当前版本启动新的存储库.
这是可能的,还是我们注定要永远拥有一个膨胀的存储库?