小编jqn*_*qno的帖子

'YZ'类型中不存在类型'X'

我们的团队最近已从Visual Studio 2008/.NET3.5迁移到Visual Studio 2010/.NET4.0.现在,VS2010给了我一个奇怪的错误信息.它可以通过以下程序重现:

using System;

namespace Some.Main
{
}

namespace SomeLib
{
    interface Some
    {
    }
}

namespace ConsoleApplication1
{
    using Some.Main;
    using SomeLib;

    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Press enter to continue");
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这在VS2008中运行得很好,但在VS2010中我收到以下错误消息:

"SomeLib.Some"类型中不存在类型名称"Main"

有趣的是,如果我点击"构建解决方案",该程序构建得很好,我甚至可以毫无问题地执行它.它只是Visual Studio,似乎有这个代码的问题.

不幸的是,我正在研究一个大型遗留应用程序,我不能(轻松地)更改这些名称空间的名称.

我想知道如何解决这个错误,我也很好奇是什么导致它.

.net c# compiler-errors .net-4.0

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

SimpleDateFormat 成功或抛出取决于年份数

ddMMyy我正在使用遗留代码,尝试使用与输入并不真正匹配的格式字符串来解析包含通常用零填充的可选时间组件的日期。本着真正的遗留代码的精神,没有人费心去清理它,因为它意外地做了它应该做的事情。但到了 2023 年,情况就不再如此了。

这是代码的(大大简化的)版本:

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class WeirdDateFormat {
    public static void main(String...args) throws ParseException {
        var df = new SimpleDateFormat("ddMMyy");
        df.setLenient(false);

        System.out.println(df.parse("09012023000000000"));
        System.out.println(df.parse("09012022000000000"));
    }
}
Run Code Online (Sandbox Code Playgroud)

它打印:

Mon Jan 09 00:00:00 CET 70403584
Exception in thread "main" java.text.ParseException: Unparseable date: "09012022000000000"
    at java.base/java.text.DateFormat.parse(DateFormat.java:399)
    at WeirdDateFormat.main(WeirdDateFormat.java:10)
Run Code Online (Sandbox Code Playgroud)

换句话说,第一个日期(2023 年 1 月 9 日)解析良好,但给出了年份为 70403584 的日期。第二个日期(2022 年 1 月 9 日)无法解析并引发异常。

(如果我们将 lenient 设置为true,则第二个日期不会抛出异常,但最终会出现在 239492593 年。)

这里发生了什么?为什么有时解析失败,有时解析失败?这些奇怪的年份数字从何而来?

(在运行 Java 8 的生产环境中发现了该问题,但 Java 17 上的行为是相同的。)

编辑是的,我知道,我知道,我必须修复遗留代码。不用一直告诉我,你在向唱诗班布道!不幸的是,我的代码的大幅简化版本并没有向您展示代码库中还 …

java simpledateformat

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

VBScript:如何检查SWbemObjectSet的有效性?

我有以下VBScript:

SET Wmi = GetObject("winmgmts:\\.\root\cimv2")
SET QR = Wmi.ExecQuery("SELECT * FROM Win32_Processor")
MsgBox("" & QR.Count)
Run Code Online (Sandbox Code Playgroud)

哪个效果很好.但是,当我查询不存在的内容时:

SET Wmi = GetObject("winmgmts:\\.\root\cimv2")
SET QR = Wmi.ExecQuery("SELECT * FROM Win32_DoesNotExist")
MsgBox("" & QR.Count)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Script: E:\test.vbs
Line: 3
Char: 1
Error: Invalid class
Code: 80041010
Source: SWbemObjectSet
Run Code Online (Sandbox Code Playgroud)

我怎么知道QR对象是否有效?

如果我打电话TypeName(QR),它会说SWbemObjectSet,但是一旦我尝试查询其中一个属性,它就会失败并显示上述消息.

我已经google了这个错误,大多数页面似乎都说"只是不做那个查询"的效果.遗憾的是,这不是一个选项,因为我想在多个版本的Windows上运行相同的脚本,而Microsoft偶尔会在新版本的Windows中弃用WMI类.我希望我的脚本能够优雅地处理它.

vbscript wmi

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

Wartremover仍会在排除的播放路线文件中报告疣

我正在尝试将Wartremover添加到我的Play项目中,但它会在路径文件中报告疣,即使我将其排除.我正在使用Wartremover 0.14和Play Framework 2.4.6.

我的build.sbt中的相关部分:

wartremoverErrors ++= Warts.all
wartremoverExcluded += crossTarget.value / "routes" / "main" / "router" / "Routes.scala"
Run Code Online (Sandbox Code Playgroud)

(请注意,我必须采用与此问题中的答案不同的方式.)

如果没有该wartremoverExcluded行,Wartremover会在路由文件中报告13个错误.有了它,它仍然报告两个:一个关于Wart.Var和一个关于Wart.ExplicitImplicitTypes.我也可以排除这些疣,但是使用Warts.allBut(Wart.Var, Wart.ExplicitImplicitTypes),但我不愿意,因为这排除了我整个代码库中的这些瑕疵,而不仅仅是路径文件.

有没有办法让Wartremover停止在路径文件中报告这些疣,而不排除每个文件的这些疣?

scala sbt playframework scala-wartremover

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

GitHub 变更日志链接到提交

某些项目有一个CHANGELOG.md文件,其中每个版本都链接到为该版本所做的提交范围。比如这个。看起来这些链接是以某种方式自动生成的,因为 markdown 仅包含渲染文档具有https://github.com/olivierlacan/keep-a-changelog/compare/v0.3.0...v1.0.0[1.0.0]的链接的位置。

这是如何运作的?我尝试在自己的项目中做类似的事情,但渲染的文档只是说[1.0.0];没有生成链接。

据推测,它与标签有关,标签遵循类似的模式(v1.0.0),但是当我尝试在我的项目中创建类似的标签时,它仍然不起作用。

我在 GitHub 帮助或其他任何地方也找不到对此的参考。

这确实是 GitHub 的一个(未记录?)功能吗?如果是,它是如何运作的?如果没有,这些项目是如何做到的?

请注意,我对像这个项目那样从提交自动生成变更日志不感兴趣。我只是对这些超链接的机制感兴趣。

github changelog auto-generate

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

无法在 JDK7 上运行 Maven 3.6.3

根据Maven 发布历史,应该可以在 JDK 7 上运行任何最新版本的 Maven(在撰写本文时)。但是,当我尝试在 Ubuntu 21.04 机器上执行此操作时,出现错误: java.lang.UnsupportedClassVersionError: com/google/inject/Module : Unsupported major.minor version 52.0.

即使在mvn不包含任何 Java 文件或pom.xml文件的目录中不带任何参数运行时也会发生这种情况。

马文信息:

??? mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: /home/jqno/.jabba/jdk/1.7.80-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.11.0-16-generic", arch: "amd64", family: "unix"
Run Code Online (Sandbox Code Playgroud)

(我还安装了 Zulu 1.7.292 和 OpenJDK;那里的行为是相同的。)

完整的堆栈跟踪:

??? mvn clean
---------------------------------------------------
constituent[0]: file:/usr/share/maven/conf/logging/
constituent[1]: file:/usr/share/maven/lib/commons-lang3.jar
constituent[2]: file:/usr/share/maven/lib/sisu-plexus.jar
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
constituent[4]: file:/usr/share/maven/lib/maven-shared-utils.jar
constituent[5]: …
Run Code Online (Sandbox Code Playgroud)

java maven-3 maven java-7

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