如果隐藏了Console,Java Web Start应用程序将崩溃

时间:2017-05-22 11:48:11

标签: java java-web-start jnlp

我已经从eclipse导出并签署了一个可运行的jar并创建了一个jnlp文件。如果java控制台设置为" show console"则应用程序启动正常在java设置中,如果java控制台设置为隐藏哪个是默认设置,则应用程序永远不会启动。当可见时,控制台在启动时不会显示任何错误。

有谁知道可能导致此行为的原因?

Beneath是我的jnlp文件,如果有帮助的话。

    var colorSpace = CGColorSpaceCreateDeviceRGB()
    let imageCG = image.cgImage!
    imageWidth = imageCG.width
    imageHeight = imageCG.height
    imageScale = image.scale
    totalPixels = imageHeight * imageWidth

    var bitsPerComponent = 8
    var bytesPerRow = 4 * imageWidth
    var bitmapInfo = CGBitmapInfo.byteOrder32Little.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue

    // Init imageContext
    imageContext = CGContext(data: nil, width: imageWidth, height: imageHeight, bitsPerComponent: bitsPerComponen`enter code here`t, bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: bitmapInfo)!
    imageContext.draw(imageCG, in: CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight))


    // Init imageData

    imageData = imageContext.data!.bindMemory(to: UInt32.self, capacity: totalPixels)

    // Init regionsData
    regionsData = UnsafeMutablePointer<UInt16>.allocate(capacity: totalPixels)

    var regionsPointer: UnsafeMutablePointer<UInt16> = regionsData
    var pointer: UnsafeMutablePointer<UInt32> = imageData

    // Scan image data and mark full transparent, semitransparent and opaque pixels in regions data

    let minAlpha = UInt32(255 - transparencyTolerance)

    for _ in 0..<totalPixels {
        if (pointer.pointee >> 24) == 255 {
            regionsPointer.pointee = regionsBlackColor
        } else if (pointer.pointee >> 24) > minAlpha {
            regionsPointer.pointee = regionsTransparentColor
        } else {
            regionsPointer.pointee = regionsWhiteColor
        }
        pointer.pointee = whiteColor
        pointer = pointer.successor()
        regionsPointer = regionsPointer.successor()
    }

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,以下是问题的解决方法。

我认为问题来自于处理登录框架并且在启动时只有启动画面。没有框架,进程就会死亡,但是当启用java控制台时,它会使进程保持活动状态,直到在启动屏幕后创建新框架。在启动画面期间将帧放置在-100,-100位置,大小为0,0解决了问题。

不是最好的解决方案,但它解决了问题。