小编aar*_*rkk的帖子

双击.jar文件时"无法找到主类"

第一:我意识到这个问题应该很简单,很多人似乎都经历过这个问题.但是,看来我的问题可能与现有帖子略有不同.

我正在使用NetBeans来编译Java应用程序.完成构建后,输出会正确进入dist \文件夹.那里有jar文件.如果我转到命令行,请导航到该文件夹​​,然后调用以下命令:

java -jar Prosperity.jar

一切正常.显然,应用程序的名称是Prosperity.以下命令也可以正常工作:

javaw -jar Prosperity.jar

但是,双击.jar文件会显示消息:"找不到主类:",然后提供.jar文件的路径.我已经检查过一百次.jar文件中存在META-INF文件夹,并且其中存在一个具有正确主类名称的MANIFEST.MF.我还检查了.jar文件中是否存在主类(App.class).class文件.

所以问题是:双击文件和运行javaw之间的区别是什么?它真的令人沮丧,它不会只是运行!

谢谢你可以给我的任何方向,我是tearin'我的头发在这里!

java command-prompt mainclass javaw

29
推荐指数
2
解决办法
6万
查看次数

C++自引用数组?

我不小心通过数组中的自引用在程序中创建了一个错误.这是一个非常简化的演示程序,在概念上类似:

#include <iostream>
using namespace std;

int kTest[] = {
    kTest[0]
};

int main() {
    cout << kTest[0] << endl;
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶我既没有收到编译错误,也没有收到关于此代码的警告!在我的情况下,它最终产生不可预测的输出.它是否访问垃圾内存?

我很好奇在什么情况下这将有明确定义的输出(如果有的话!).

编辑:是否有所作为,如果kTeststatic?怎么样const?都?

c++

19
推荐指数
2
解决办法
841
查看次数

使用Visual Studio调试器与不使用调试器运行可执行文件之间的差异

我正在尝试调试一个问题,其中可执行文件直接从Visual Studio执行时产生可重复输出(我想要),但在从命令提示符执行时不会产生可重复输出.它是一个单线程应用程序,所以在时间方面不应该有任何奇怪的行为.

有人可以列举两种环境之间可能存在的差异吗?

我确定实际的可执行文件是相同的 - 它们都是发布版本并运行相同的.exe文件.

以下是环境和结果:

  1. 直接从命令提示符(cmd)运行:不可重复的输出
  2. 从带有调试的Visual Studio(F5)运行:可重复输出
  3. 从Visual Studio运行而不进行调试(Ctrl-F5):不可重复的输出

我知道工作目录可能有所不同,但我手动调整它以确保工作目录是相同的.

基于这些结果,看起来像运行"with Debugging"(即使在Release版本中)以某种方式修复了问题.这是否可能是罪魁祸首?运行可执行文件与调试之间有什么区别?

解决方案:正如在接受的答案中指出的那样,调试堆就是问题所在.问题是我们代码的内部深处,有人在初始化之前访问大型数组的部分内容.他们已经用malloc分配了内存并且没有将内存初始化为0.调试堆将(我假设)用一些可重复的值填充数组,而当调试器没有附加时(即从命令行运行或与Ctrl-F5)值更随机,有时会导致程序行为的微小偏差.不幸的是,调整是如此微妙以至于几乎不可察觉,并且在处理的第一个"帧"之后,所讨论的存储器正确地重置,但是初始条件已经略有不同并且损坏已经完成.混沌理论在行动!感谢您的指导.

一个很好的调试技巧帮助:编写一个自定义的malloc,立即用完全随机的数据填充内存.这样,你可以确保在使用它之前自己正确地初始化它,否则每次运行它时你的结果都会(希望)疯狂 - 即使在调试堆的调试模式下!

c++ windows visual-studio-2010 visual-studio

15
推荐指数
1
解决办法
6923
查看次数

LNK2022元数据操作:重复类型中的布局信息不一致

在我正在使用的项目中,我遇到了一个新的链接器错误:

1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<char,std::char_traits<char>,std::allocator<char> >): (0x0200004e).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >): (0x02000075).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000091).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_const_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000092).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed …
Run Code Online (Sandbox Code Playgroud)

c++ windows clr linker c++-cli

14
推荐指数
1
解决办法
2万
查看次数

使用异步JavaScript进行Capybara集成测试

我有一个失败的Rails集成测试,我无法弄清楚原因.我正在使用Capybara和Selenium作为驱动程序.

在AJAX调用发生后,测试检查页面内容是否已被删除.相关操作是单击一个按钮,单击该按钮会导致页面的一部分通过jQuery remove()调用删除.以下是集成测试代码的近似值:

click_button("Remove stuff")
assert has_no_link?("This should be removed")
Run Code Online (Sandbox Code Playgroud)

断言失败,暗示链接仍然存在.

我一直在阅读Capybara,我知道你可以延长默认的等待时间.我把它扩展到一个荒谬的值(20秒),但断言仍然失败.

当我自己手动跟踪测试过程时,页面仍然显示内容,但DOM不显示(通过查看Firefox的DOM Inspector并查找元素).这是问题吗?我甚至已经试过检查DOM ,而该测试是在Firefox中运行,以检查内容在那里,它不似乎是.

我不知道Capybara如何仍然找到DOM中不再存在的链接.Capybara是在检查源而不是DOM并在那里找到链接吗?如果是这样,我不知道如何修复此测试以确保测试通过.刷新页面可以解决问题,但这不完全是用户会做的事情,所以我犹豫改变页面只是为了让测试通过......

会喜欢有关如何解决这个问题的任何建议.

谢谢!

javascript jquery selenium ruby-on-rails capybara

13
推荐指数
1
解决办法
3893
查看次数

使用Boost :: Asio进行双向TCP通信的程序结构

首先,我希望我的问题有道理,甚至可能!从我读过的关于TCP套接字和Boost :: ASIO的内容来看,我认为应该如此.

我要做的是设置两台机器,并在它们之间通过TCP实现双向读/写链路.任何一方都应该能够发送一些数据供另一方使用.

关于TCP(/ IP?)的第一个令人困惑的部分是它需要这个客户端/服务器模型.然而,阅读表明任何一方都能够写作或阅读,所以我还没有完全气馁.我不介意建立任意一方作为客户端而另一方作为服务器.在我的申请中,这可以提前谈判,而不是我关心的问题.

不幸的是,我遇到的所有示例似乎都集中在连接到服务器的客户端上,并且服务器立即发回一些数据.但我希望客户端能够写入服务器.

我设想了一种我称之为的循环io_service.poll().如果轮询显示另一方正在等待发送一些数据,它将调用read()并接受该数据.如果队列中没有任何等待,并且它有要发送的数据,那么它将调用write().双方都这样做,他们应该能够互相读写.

我关心的是如何避免两者同时进入某些同步write()操作的情况.他们都有数据发送,然后坐在那里等待双方发送.这是否问题恰恰暗示我应该只做异步write()read()?在这种情况下,如果连接的两端都试图同时异步写入,事情会爆发吗?

我希望有人可以理想地:

1)提供一种非常高级的结构或最佳实践方法,可以从客户端和服务器的角度完成此任务

或者,理想情况下,

2)说我想做的事情是不可能的,也许建议某种形式的解决方法.

c++ boost network-programming boost-thread boost-asio

12
推荐指数
1
解决办法
2601
查看次数

如何在C++中使用大写/小写UTF-8字符?

我们假设我有一个std::string包含以下内容的UTF-8编码:

óó

我想将其转换为以下内容:

ÓÓ

理想情况下,我希望我使用的大写/小写方法在所有UTF-8中都是通用的.如果这是可能的.

字符串中的原始字节序列是0xc3b3c3b3(每个字符两个字节,两个实例ó),我希望输出为0xc393c393(两个实例Ó).StackOverflow上有一些示例,但它们使用宽字符串,而其他答案则表示您不应该为UTF-8使用宽字符串.看来这个问题可能非常"棘手",因为输出可能依赖于用户的语言环境.

我本来希望只是使用类似的东西std::toupper(),但我的用法真的不清楚,因为我似乎不是一次只转换一个字符而是整个字符串.此外,该Ideone例如我放在一起,似乎表明toupper()0xc3b3只是0xc3b3,这是一个意外的结果.调用setlocaleUTF-8或ISO8859-1似乎不会改变结果.

如果你能够解释我做错了什么或为什么我的问题/前提是错误的,我会喜欢一些指导!

c++ string unicode utf-8

11
推荐指数
3
解决办法
4099
查看次数

在没有动态转换或静态向下转换的情况下比较C++中的派生类

我正在尝试将公共基类的对象进行比较.当两个对象在类中不同或者对象的特定值不同时,比较应该失败(例如,输出失败字符串).理想情况下,比较以某种方式强制执行,这样新的派生类也必须将比较函数写入其类的成员.这是一个代码示例:

#include <iostream>
#include <string>
#include <vector>

class Vehicle 
{ 
public:
  virtual std::string compareTo(Vehicle* v) = 0;
};

class Bicycle : public Vehicle
{
public:
  Bicycle() { color_ = "red"; }
  std::string compareTo(Vehicle* v) { return "We're different vehicles."; }
  std::string compareTo(Bicycle* b) { return color_.compare(b->color_) ? "We're different bicycles." : "We're the same bicycle."; }

private:
  std::string color_;
};

class Car : public Vehicle
{
public:
  Car() { style_ = "sedan"; }
  std::string compareTo(Vehicle* v) { return "We're different …
Run Code Online (Sandbox Code Playgroud)

c++ oop

9
推荐指数
2
解决办法
3549
查看次数

在DLL_PROCESS_ATTACH之前调用Delphi DllMain DLL_PROCESS_DETACH

我在处理用Delphi编写的DLL时遇到了很多麻烦.我使用库中的以下代码设置了DllMain函数:

begin
  DllProc := DllMain;
end.
Run Code Online (Sandbox Code Playgroud)

我的DllMain程序看起来像这样:

procedure DllMain(reason: Integer);
begin
  if reason = DLL_PROCESS_DETACH then
    OutputDebugString('DLL PROCESS DETACH')
  else if reason = DLL_PROCESS_ATTACH then
    OutputDebugString('DLL PROCESS ATTACH')
  else if reason = DLL_THREAD_ATTACH then
    OutputDebugString('DLL THREAD ATTACH')
  else if reason = DLL_THREAD_DETACH then
    OutputDebugString('DLL THREAD DETACH')
  else
    OutputDebugString('DllMain');
end;
Run Code Online (Sandbox Code Playgroud)

我发现在调用ATTACH之前,调用者(我无法控制)似乎会调用DETACH(两次?!).这是可能的,还是我误解了这应该如何工作?我的期望是每个ATTACH呼叫都会遇到匹配的DETACH呼叫,但情况似乎并非如此.

什么在这里??!

windows delphi dll

9
推荐指数
1
解决办法
5755
查看次数

给定多种类型的资源和每项任务的特定资源混合,最大限度地提高资源利用率

特定

您有一些非常大量的可能任务,每个任务都需要使用来自大量可能资源的某些可能资源子集.

每项任务都有相关的资源成本:

任务1

  • 1金
  • 2银

任务2

  • 2金
  • 1铜

任务3

  • 1铜

你有一套可用的资源:

资源

  • 3金
  • 2青铜

问题

选择任务的子集,其中任何一个都可以执行多次,这样可以"充分利用" 所有可用资源.在这种情况下,也许我们会选择任务2和任务3,因为它只剩下1金.我们不能执行任务1因为我们没有白银.

问题

这似乎是某种优化问题,但我不确定这个问题会被"称为".是否有一些奇特的名字,我可以抬头指导我寻找可能的解决方案?那里有直接的算法可以解决这个问题吗?它能在合理的时间内解决吗?有一些很好的启发式方法吗?

笔记

  • 如图所示的问题意味着资源的权重可能会有所不同(即,留下1金币比使用1铜牌更糟糕),但这不一定是个问题.解决方案必须不考虑这一点,但这将是一个有趣的扩展.
  • 任务和资源不必是整数值,但我不确定这是否会显着改变问题.

algorithm optimization

8
推荐指数
1
解决办法
594
查看次数